• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:外部ファイルを読み込んだ際に表示される文字列)

外部ファイルを読み込んだ際に表示される文字列

このQ&Aのポイント
  • 外部ファイルを読み込み表示させるFlash作成時に、「=&onLoad=[type Function]」が表示されてしまう場合の対処法は何ですか?
  • 外部ファイルを読み込んだ際に表示される文字列を取り除く方法を教えてください。
  • Flashで外部ファイルを読み込んだ際に表示される余分な文字列を非表示にする方法を教えてください。

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

テキストフィールドのインスタンス名ではなく、表示する変数名(「プロパティ」パネルに表示される、「変数:」の項目)に nText と指定していませんでしょうか? テキストフィールドを選択して「プロパティ」パネルを見ると、左上の方に<インスタンス名> という仮の文字列が入っている項目があるかと思います。ここに nText と入力して、#1でご紹介した要領で onLoad の処理を定義してみてください。 「変数:」の項目は空白にしても構いません。 Flash MX からはテキストフィールドインスタンスという概念が登場し、制御用に TextField オブジェクトが用意されて、スクリプトでより細かく制御できるようになりました。 例えば、ムービークリップをステージに配置して、インスタンス名を clip としたとすると、  clip.gotoAndPlay( 1 ); このようにインスタンス名を指定して MovieClip オブジェクトの持つ様々な機能を利用し、ムービークリップを細かく制御できます。 テキストフィールドもこれと同様に、インスタンス名を元にして TextField オブジェクトの機能を利用します。 TextField オブジェクトには、テキストフィールド内に表示する内容を管理している text というプロパティがあり、書き換えることで表示する内容を変更できます。 #1でご紹介したスクリプトは、テキストフィールドにインスタンス名を付け、TextField オブジェクトの text プロパティを書き換えて表示する方法です。 しかし、nText がテキストフィールドのインスタンス名ではなく単なる変数だった場合は、nText の名前では TextField オブジェクトの機能を利用できません。 ですから、nText.text と指定しても無効になり、読み込んだ変数を代入しても、テキストフィールドには何も表示されないことになります。 -------------------------------------- Flash 5 までは、テキストフィールドインスタンスの考え方がありませんでした。 Flash 5 以前の Flash でテキストフィールドをスクロールさせるには、テキストフィールドに表示する変数の名前を設定し、  変数名.scroll このようにして、スクロールを実現していました。 Flash MX から登場した TextField オブジェクトにも scroll というプロパティがありますが、表示する変数の名前ではなく  テキストフィールドのインスタンス名.scroll として利用します。 文法上は全く見分けが付きませんが、上記のように変数名を利用してスクロールさせる方法は、Flash MX からは使用を避ける機能に指定されています。 なお、スクロールの処理に”変数名.scroll”を利用しても、全くの間違いではありません。 ですから、テキストフィールドにインスタンス名を付けず変数名だけを指定しても、外部から読み込んだイテキストは表示できますし、スクロールさせることも可能です。 この場合は、要するに、テキストフィールドに表示する変数 nText に、nLoad の中に読み込まれた変数(仮に test とします)の中身が代入されればいいだけですから、  nLoad.onLoad = function( success )  {   if( success )   {    nText = nLoad.test;   }  }; とすれば、読み込んだ変数の内容が表示されますし、ご質問文にあるスクリプトでスクロールもできます。 ただ、文法上も動作の上でも問題はなくても、変数名を使ってスクロールさせる方法はやはり旧式です。 テキストフィールドに名前を付けるだけですから、できるだけ TextField オブジェクトの scroll を使う方がいいと思います。 ちなみに、LoadVars では読み込み終了時に URL エンコードとして読み込んだ文字を解釈(デコードといいます)し、変数とその値として利用できるように処理されています。 普通にテキストを読み込み、表示させたいだけなら、エンコードされた文字をデコードするスクリプトである unescape は、実行する必要はありません。

teas
質問者

お礼

ありがとうございます上記で無事解決いたしました。 また何かありましたらよろしくお願いします。

その他の回答 (1)

  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

onLoad は LoadVars オブジェクトが持っているイベントハンドラで、読み込みが終わった時に実行する関数を管理しています。 普段は表示されないものですが、これが表示されるとなると、読み込んだ変数を表示させる処理に何か原因があるのではないでしょうか。 例えば、テキストファイル” eikaku.txt ”の中身が  test=テスト だとします。 これを、  nLoad = new LoadVars();  nLoad.load( "eikaku.txt" ); このように LoadVars クラス( Flash MX ではオブジェクト)を使って読み込むと、テキストファイルに書かれていた変数 test は、読み込みを担当した nLoad の中に入ります。 ですから、参照する時は  nLoad.test このような書き方になります。 読み込み完了後、ダイナミックテキストのテキストフィールド nText に表示したい時は、先ほどの onLoad イベントハンドラを使って次のように定義してみてください。 (↓各行頭に全角のスペースが入っています。コピーして利用する際は、全て半角のスペースかタブに置き換えてください)  nLoad.onLoad = function( success )  {   //読み込みが成功した場合、テキストフィールドに表示   if( success )   {    _root.nText.text = nLoad.test;   }  }; onLoad イベント発生時、つまり読み込みの演算が終わった時に呼び出される関数には、引数として演算の結果が渡されてきます。上記の例では、この時の引数を仮引数 success として定義しています。 引数の値は、読み込みが正常に終了した時に true 、失敗した時は false です。 この結果を利用して、読み込みが成功した時だけ、ダイナミックテキストに読み込んだテキストを表示するようにしています。 ダイナミックテキストもしくはテキスト入力にしたテキストフィールドは、ActionScript では TextField というクラスで制御できます。 text は TextField クラスが持っているプロパティの1つで、テキストフィールドに表示する文字列が入っています。これを書き換えることで、表示する内容を変更できます。

teas
質問者

補足

ご返答ありがとうございます。 あれからもう少しやってみまして、 System.useCodepage = true; nLoad = new LoadVars(); nLoad.load("eikaku.txt"); nLoad.onLoad = function() { nText = unescape(nLoad); }; と記述しました。ですが、やはり&onLoad=[type Function]と表示されてしまいます。 上記のご返答のようにしたのですが、テキストは表示されませんでした。

関連するQ&A