• ベストアンサー

テキストファイルからの読み込みにつきまして

はじめまして。Flash初心者です。 ただいま、「プロとして恥ずかしくないFlashの大原則」のP94ページの 外部テキストからの設定が可能な縦メニューを挑戦しているのですが、テキストファイルからの日本語の読み込みが表示できません。アルファベットでしたら表示ができるので、どこがおかしいのかわからなくなってしまいました。 以下、使用中のロジック // 外部テキストのエンコード設定 System.useCodepage = true; i = 0; // メッセージウィンドウに1文字ずつ表示する関数を作成 function msgWindow( winObj, mObj ){ if( i <= mObj.mMsg.length ){ winObj.msgStr.text = mObj.mMsg.substr( 0, i ); i++; } else{ i = 0; clearInterval( _root.tID ); } } // ロード時に外部テキストを読み込む onLoad = function(){ if( _root.textUrl != null ){ this.loadVariables( _root.textUrl ); } else{ this.loadVariables( "menu.txt" ); } } // データを読み込み後の処理 onData = function(){ // メニューボタンをステージに配置 for( cnt = 1; cnt < 2; cnt++ ){ if( eval( "menu" + cnt ) !== undefined ){ mObj = "mBtn" + cnt; _root.attachMovie( "menuBtn", mObj, cnt ); _root[mObj]._x = 5; _root[mObj]._y = 60 * cnt; _root[mObj].m_name.text = eval( "menu" + cnt ); _root[mObj].mUrl = eval( "url" + cnt ); _root[mObj].mTarget = eval( "target" + cnt ); _root[mObj].mMsg = eval( "msg" + cnt ); } // メニューボタン上でマウスボタンを離した時 _root[mObj].onRelease = function(){ getURL( this.mUrl, this.mTarget ); } // マウスオーバー時の処理 _root[mObj].onRollOver = function(){ eval(this._name).gotoAndStop( 2 ); with(_root) { objMsgWin = "newMsgWin"; attachMovie("msgWin", objMsgWin, 100 ); _root[objMsgWin]._x = this._x; _root[objMsgWin]._y = this._y + 25; tID = setInterval( msgWindow, 20, _root[objMsgWin], this ); } } // ポインタをメニューボタン外に移動した時 _root[mObj].onRollOut = function(){ eval(this._name).gotoAndStop( 1 ); _root[_root.objMsgWin].removeMovieClip(); clearInterval( _root.tID ); } // マウスボタンがメニューボタン外で離された時 _root[mObj].onReleaseOutside = function(){ eval(this._name).gotoAndStop( 1 ); _root[_root.objMsgWin].removeMovieClip(); clearInterval( _root.tID ); } } } stop(); 以下、テキストファイル &menu1=あいうえお& &menu2=123456& &menu3=MENU03& &menu4=MENU04& &menu5=MENU05& &menu6=MENU06& &menu7=MENU07& &menu8=MENU08& &url1=http://www.mdn.co.jp/& &url2=http://www.mdn.co.jp/& &url3=http://www.mdn.co.jp/& &url4=http://www.mdn.co.jp/& &url5=http://www.mdn.co.jp/& &url6=http://www.mdn.co.jp/& &url7=http://www.mdn.co.jp/& &url8=http://www.mdn.co.jp/& &target1=_blank& &target2=_blank& &target3=_blank& &target4=_blank& &target5=_blank& &target6=_blank& &target7=_blank& &target8=_blank& &msg1=現在のページです& &msg2=現在のページです& &msg3=現在のページです& &msg4=ここにメニュー04の説明が入ります。& &msg5=ここにメニュー05の説明が入ります。& &msg6=ここにメニュー06の説明が入ります。& &msg7=ここにメニュー07の説明が入ります。& &msg8=ここにメニュー08の説明が入ります。& 結果 『&menu1=あいうえお&』で出したい、「あいうえお」が表示できません。他の&menuと&msgの日本語は表示されるのですが、どこかおかしいでしょうか。 もしお時間ありましたら宜しくお願い致します。 ちなみにですが、今回のロジックのサンプルはhttp://www.mdn.co.jp/content/view/962からダウンロードしたものです。

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

#1の方も書かれていらしゃいますが、 「あいうえお」が表示されないのは、ActionScript や データ の問題ではありません。 メニューの字体を格好良く綺麗に見せるために、 また、 そのフォントが無いPCでも同じように表示させるために、 ダイナミックテキストにフォントを埋めこんであるのです。 そのフォントも、  大文字[A,,Z] (27文字)  小文字[a,,z] (27文字)  数字[0,,9] (11文字)  句読点記号[!@#%,,,] (52文字) のみです。 フォントを埋め込むと、 普通はそれ以外の文字がそのダイナミックテキストに表示されなくなります。 ですから 「あいうえお」 が表示されないのです。 上のようになっていることの確認方法です。 「ライブラリ」パネル を見てみて、 (もし 「ライブラリ」 パネルが表示されていない場合は、  「ウィンドウ」→「ライブラリ」にチェックを入れて、) その 「ライブラリ」 の中の 「MenuBtnMC」 をダブルクリックし、 「MenuBtnMC」 内のタイムラインの編集に移ります。 「MenuBtnMC」 内のタイムラインの レイヤー2 には、 「m_name」 というインスタンス名のダイナミックテキストがありますが、 それを選択して、 下のプロパティインスペクタ(プロパティパネル)を見てみると、 次のようになっていることが確認できると思います。 //////////////////////////////////////////////////////  A [Century Gothic] [14 ]∨ B I  [0 ]∨ [標準 ∨] [カスタムアンチエイリアス ∨] [埋め込み,,,] ////////////////////////////////////////////////////// この [埋め込み,,,] ボタンをクリックすると、 「文字の埋め込み」パネルが出てくると思います。 このパネルで、  大文字[A,,Z] (27文字)  小文字[a,,z] (27文字)  数字[0,,9] (11文字)  句読点記号[!@#%,,,] (52文字) がグレーになった選択状態で下の方には、  文字総数: 114 が表示されていると思います。 この 114文字 が埋め込まれてあるということで、 この 114文字 以外は表示されないということになります。 - - - - - - - - - - - - - - - - - - - - 解決策ですが。 一番の近道は、 埋め込みフォントを指定しないということです。 操作方法としては、 「文字の埋め込み」パネル で「埋め込まない」ボタンをクリックして「OK」します。 これで、 &menu1=あいうえお& によって 「あいうえお」 も表示されるようになります。 ただし、フォントを埋め込んでいませんから、 カスタムアンチエイリアス もかかりませんし、 Century Gothic が入っていない PC では違う代替フォントで表示されます。 また Century Gothic には日本語フォントが元から入っていませんから、 Century Gothic が入っている PC でも、 あいうえお は Century Gothic ではない代替フォント、デバイスフォントの「_等幅」あたりで表示されます。 もし、日本語も Century Gothic 同様に、 綺麗な字体でその字体が入っていないPCでも同じように表示させたい場合は、 少なくとも Century Gothic 以外の日本語が入ったフォントを指定して、 [埋め込み,,,] ボタンから日本語文字も埋め込むようにしなければなりません。 しかし、日本語フォントは文字数が莫大にあります。 全てを埋め込むとそれだけで2~3MBくらい以上の SWF になってしまいますから、 普通はそのようなことはしません。 するとしても、  日本語(かな) (318 文字) を追加することくらいが限度だと思います。 ちなみに、 最初に付いてくる p094.swf は 11.1 KB (11,423 バイト) ですが、 「文字の埋め込み」パネル で「埋め込まない」ボタンをクリックして「OK」したものをパブリッシュすると、 1.35 KB (1,385 バイト) の p094.swf になりました。 ほぼ 11,423-1,385 = 10,038バイト(約10KB) が、 埋め込まれた 114文字 分のテキストのアウトラインデータの容量です。 日本語を表示させる場合は、オーソドックスに普通通り、 フォントには 「_ゴシック」 や 「_等幅」 など前にアンダースコアの付いたデバイスフォントを指定して、 埋め込みをしない(デバイスフォントの場合はできませんが)という方法を取るのが無難な方法だと思います。 「ライブラリ」 のムービークリップ 「msgWin」 をダブルクリックしてムービークリップ内のタイムラインの編集に入ると、 レイヤー1 に 「msgStr」 というインスタンス名のダイナミックテキストがありますが、 こちらはオーソドックスに 「_ゴシック」 が指定されています。 アンチエイリアスなどはかかっていませんが、日本語フォントも使えます。 こちらが普通の方法です。

arubia50
質問者

お礼

とてもご親切な回答有り難うございました。「_ゴシック」 で対応しようと思います!日本語が出て来た時は、思わずニヤッと笑ってしまいました。 「プロとして恥ずかしくないFlashの大原則」はとても真似したい例がたくさんあるのは有難いのですが、少し初心者には、説明が少なく苦労するように感じました。 これからも負けじとスキルアップしていけたらと思います。 また機会がありましたら宜しくお願いします。

その他の回答 (1)

  • suzuko
  • ベストアンサー率38% (1112/2922)
回答No.1

もしかして「ダイナミックテキスト」の「プロパティ」で「_等幅」になどの日本語表示フォントにしていないとか・・・・・?