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

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

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

お世話になります。 今回外部ファイルを読み込み表示させるFlashを作成下のですが、最終行に「=&onLoad=[type Function]」と表示されてしまいます。表示させなくするにはどのような手段を用いればよろしいでしょうか? --------ソース------------ // エンコード設定 System.useCodepage = true; // オブジェクト生成 nLoad = new LoadVars(); // 外部テキストを読み込む nLoad.load("eikaku.txt"); // 読み込み完了 // 関数呼び出し用 function mScroll01() { // 上にテキストスクロール _root.nText.scroll -= 1; } // 関数呼び出し用 function mScroll02() { // 下にテキストスクロール nText.scroll += 1; } -------ここから上ボタン------------------------------ onClipEvent (enterFrame) { if (check) { _root.mScroll01(); } } on(press) { check = true; } on(release, releaseOutside) { check = false; } ---------ここから下ボタン--------------------------------- onClipEvent (enterFrame) { if (check) { _root.mScroll02(); } } on(press) { check = true; } on(release, releaseOutside) { check = false; } と処理をさせています。よろしくお願いします。

  • teas
  • お礼率33% (36/107)
  • Flash
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • 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

  • ドラッグしたときの当たり判定

    ParaFlaを使ってFlashを制作しています aというスプライトをドラッグし bというスプライトにぶつかったらラベルCに飛ぶ というものを作りたいのですがうまくいきません aに記述しているアクションスクリプト on (press) { this.startDrag (true); } - on (release,releaseOutside) { this.stopDrag (); } - onClipEvent (enterFrame) { if(this.hitTest(_root.b) == true) { this.gotoAndPlay("c"); } } - onClipEvent (mouseMove) { updateAfterEvent(mouse); } バージョンはSWF8です ドラッグはできるのですがbとぶつかっても 何も起こりません bには何も記述していません どこを変更すればよいかわかる方 よろしくお願いします

    • ベストアンサー
    • Flash
  • テキストスクロールの外部テキストファイルが表示されない

    こちらの過去ログから下記サイトを参考に、外部テキストファイルを読み込んで表示するテキストスクロールを作成しました。 http://www.flashiroha.com/script/as5.html flashで保存したswfファイルでは正常に表示されるのですが、作成したHTMLファイルにswfファイルを挿入すると外部テキスト部分が表示されず、サイドのスクロールボタンのみしか見えていません。 swfファイルと同階層にtextファイルは置いています。 そして、そのswfファイルをダブルクリックすると外部テキストファイルは表示されているにもかかわらず、htmlファイルでは表示されないのです。 足りないところは、補足説明も致しますのでよろしくお願い致します。 --------------------------------------------- ■htmlファイル <div id="textbox"> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="545" height="150" title="テキストスクロール"> <param name="movie" value="common/flash/text.swf" /> <param name="quality" value="high" /> <embed src="common/flash/text.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="545" height="150"></embed> </object> </div> ■css #textbox { width: 545px; height: 150px; margin: 10px 0; } ■flash //テキストフィールドに this.loadVariables("text.txt"); //上向きボタンに on(rollOver){ _root.onEnterFrame = function() { _root.textbox.scroll -= 1; } } on(rollOut, releaseOutside) { _root.onEnterFrame = function() { _root.textbox.scroll -= 0; } } //下向きボタンに on(rollOver){ _root.onEnterFrame = function() { _root.textbox.scroll += 1; } } on(rollOut, releaseOutside) { _root.onEnterFrame = function() { _root.textbox.scroll += 0; } }

    • ベストアンサー
    • Flash
  • 外部jpgを表示できません。

    勉強はしているものの、なかなか理解に苦しんでいる初心者です。 左右にスクロールする mc(picg)の中に外部jpgの小さい画像を表示するための mc(pics0~pics9) があり、 この(pics0~pics9)のmcを押すと、別に設置したmc(screen)に外部jpgの大きな画像が表示されるというのを作っています。 大きい外部jpgの表示はなんとかできたのですが、(pics0~pics9)に小さい画像を表示することができません。 どなたかご教授の程よろしくおねがいいたします。 例 pics0 の script です。 onClipEvent(enterFrame){ loadMovie("pics0.jpg","_root.picg.pics0"); } on (release) { loadMovie("picl0.jpg", "_root.screen");  } on (rollOver) { _parent.fScroll = false; } on (rollOut) { _parent.fScroll = true; }

    • ベストアンサー
    • Flash
  • 文字を一文字づつ表示し、スクロールバーがしたまできたら、文字を表示する。

    質問させて下さい。 //トレーニングボタンを押したとき train.onRelease = function() { mydata_len = _level0.entry.length; i = 0; typeID = setInterval(function () { if (i<mydata_len) { i++; _root.my_txt.scroll++; my_txt.text = _level0.entry.substr(0, i); my_txt.setTextFormat( format ); } else { clearInterval(typeID); } }, 1); //テキストフィールドのscrollプロパティを監視 my_txt.onScroller = function() { if( this.scroll == this.maxscroll ) { _root.training._visible = false; _root.trainingend._visible =true; } else { _root.training._visible = true; _root.trainingend._visible =false; } } } テキストフィールドにタイプライター風に文字を一文字づつ表示させ、表示させている間は、表示中のダイナミックテキストをテキストフィールドの下に表示し、スクロールバーが一番したまできたら、表示終了のテキストに切り替わる、という事をしたいのですが、 文字を一文字づつ表示させている間も表示終了の文字が出てきてしまうのです。 文字を一文字づつ表示している間、スクロールバーが一番下にきたら、表示終了。それ以外は表示中、としたいのです。 文字を一文字づつ表示している間。という制約がなければできるのですが、文字の表示中だとうまくいきません。 もしよろしければ、お教えいただきたく思います。 私がつかっているのは、 WIN XP FLASH MX 2004 です。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 階層指定について

    お世話になります。ご教授願いたいと思います。 やろうとしているのは、FLASHでよくある、 ダイナミックテキストエリアに 変数をつけて外部からテキスト読み込んだ文章 this.loadVariables("http://○○○); System.useCodepage=true; が長い文章なので2つの↑↓でスクロールさせたいのです。 サンプルのそのまま↑↓にそれぞれ 以下のようなスクリプトを埋め込み onClipEvent (enterFrame) { if (scrolling) { _root.○○○.scroll++; } } _rootで行なっている場合は うまくスクロールしてくれました。 しかし、2つ下のムービークリップ で行なうと全く動かなくなりました。 この部分 _root.○○○.scroll++; のパスの指定がわかりません。 this.○○○.scroll++; でも動かないです。 どなたか、教えて頂けませんか?

    • ベストアンサー
    • Flash
  • カウントダウンタイマーについて

    カウントダウンタイマーで、クリックするとカウントダウンが始まる設定のコードを見つけましたが、 クリックをしないでもカウントダウンするためには、 どのコードを削ったら良いのかわかりませんでした。。 ご教授頂けたら幸いです。 onClipEvent (load) { cnt = 5*1000; _root.cnt_flg = false; } onClipEvent (enterFrame) { if (_root.cnt_flg) { ms = cnt-(getTimer()-_root.my_time); m = Math.floor(ms/60/1000); s = Math.floor(ms/1000)-m*60; if (ms>=0) { this.TM.text = "あと "+m+"分 "+s+"秒"; } else { this.TM.text = "TIMEOVER!"; } } } on (release) { if (!_root.cnt_flg) { _root.cnt_flg = true; _root.my_time = getTimer(); } }

    • ベストアンサー
    • Flash
  • ボタンをクリックでムービーを表示させストップ、その際、他のボタンは関係なく動いている

    FLASH MX 2004を使っているAction Script初心者です。 http://oshiete1.goo.ne.jp/qa4288529.html で前回の問題は解決できたのですが、新たな問題が発生しました。 _root   ├b01(モーショントゥイーンなどで動くボタン)   ├m01(表示/非表示 が変わるムービークリップ)   ├b02(モーショントゥイーンなどで動くボタン)   └m02(表示/非表示 が変わるムービークリップ) 動いているb01というボタンをクリックすると、m01というムービーが表示され、b01とm01はストップし、m01をクリックするとm01は消え、b01が再度動き出し、その間はb02は関係なく動いているというようにしたいのですが、全体がストップ、全体が動き出す、もしくはストップしないというようになってしまいます。 b02はb01と同様にクリックすると、m02というムービーが表示され、b02とm02はストップし、m02をクリックするとm02は消え、b02が再度動き出し、その間b01は関係なく動いているという仕様です。 【b01】 on (release) { _root.m01._visible = true; _root.m01.stop(); _root.b01.stop(); } 【m01】 onClipEvent (load) { this._visible = false; } on (release) { _root.m01._visible = false; _root.b01.play(); } 【b02】 on (release) { _root.m02._visible = true; _root.m02.stop(); _root.b02.stop(); } 【m02】 onClipEvent (load) { this._visible = false; } on (release) { _root.m02._visible = false; _root.b02.play(); } いろいろと間違っているかも知れませんが、ご教授ください。 よろしくお願い致します。

    • ベストアンサー
    • Flash
  • ActionScriptで release と releaseOutside の合体記述

    FLASHのActionScriptにおいて、 on(release){… と on(releaseOutside){… を合体させると、 on(release, releaseOutside){… ですが、 this.hoge.onRelease = function(){… と this.hoge.onReleaseOutside = function(){… を合体させるとどうなるんでしょうか? かなり初歩的かもしれませんがお詳しい方、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ムービーをクリックしてボタンを動かしたい

    FLASH MX 2004を使っているAction Script初心者です。 動いているb01というボタンをクリックすると、m02というムービーが表示され、b01とm02はストップし、m02をクリックするとm02は消え、b01が再度動き出すということをしたいのですが、b01とm02のストップまではできたのですが、ストップしたb01を動かすことができません。 【b01】 on (release) { _root.m02._visible = true; stop(); } 【m02】 onClipEvent (load) { this._visible = false; } on (release) { _root.m02._visible = false; _root.b01.play(); } いろいろと間違っているかも知れませんが、よろしくお願い致します。

    • ベストアンサー
    • Flash
  • else if文の順序を変えることに意味がありますか?

    else if文の順序を変えることに意味がありますか? 「スプライトに記述したクリップアクションです。 実行される内容はどうでも良いのですが、 else if文の順序を変えることに意味がありますか?」 ×(2)の部分だけが実行されません。       onClipEvent (enterFrame) {        if (_root.get_tabaco == false ){          this.gotoAndPlay(4); (1)  }else if(_root.get_tabaco ==true){          this.gotoAndPlay(1); (2)  }else if(_root.state_tabaco == 2){          this.gotoAndPlay(5);     } } ○全て実行されます。       onClipEvent (enterFrame) {        if (_root.get_tabaco == false ){          this.gotoAndPlay(4); (2)  }else if(_root.state_tabaco == 2){          this.gotoAndPlay(5); (1)  }else if(_root.get_tabaco ==true){          this.gotoAndPlay(1);     } } 「(1)と(2)の順序を変えただけで正しく実行されるようになりました。 しかし、なぜ?上手くいったのか、どこが間違いなのか分かりません。 else ifに順序なんかあるんでしょうか? こられのスクリプトに違いがありましたら、教えていただけませんか?」

    • ベストアンサー
    • Flash

専門家に質問してみよう