• ベストアンサー

LoadVars

BlurFiltanの回答

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

#1です。 もののたとえ方が間違っていました。訂正いたします。 > その定義自体が空振りになる可能性も考えられます。 →その定義自体が見送りになる可能性も考えられます。 バッターボックスにバッターが立つ前に,ピッチャーからボールを投げられてしまった場合, 用意ができていないバッターはボールを見送ってしまう。 ということをイメージして書いたつもりが, 「空振り」という的を射ていない比喩になってしまっていました。 言いたいことは同じなのですが, 私の妙な説明より,次のページの方がわかりやすいと思います。 「LoadVarsオブジェクトを使った外部テキストファイルの読込み」 http://www.fumiononaka.com/TechNotes/Flash/FN0303007.html このページの下の方より引用 > LoadVars.onLoadメソッドの定義について、 > ひとつ大事な注意があります。 > LoadVars.loadメソッドによる外部テキストファイルのロードを > LoadVars.onLoadメソッドの定義より先に実行してしまうと、 > 定義が済む前にロードが完了してしまうおそれがあります。 > すると、定義が有効になったときには、 > もはやonLoadの呼出しが終わっているので、 > イベントハンドラメソッドは実行されないことになります。 > ですから、LoadVars.onLoadメソッドの定義をまず行ってから、 > LoadVars.loadを実行するのが確実です。

thank001
質問者

お礼

BlurFiltanさん、書き込みありがとうございます。 詳細にご説明いただきながら、まだ上手く理解ができない状態です(というより私は他の部分で勘違いして理解しているようなのですが、、、)。 まず私の理解(勘違い?)として、すべてコードは上から順に処理が進み、その処理が終わると次の行へ進むという理解なのですが、どうもここの辺りで私の勘違いがあるようなのですが、 例えば、 var textReaderLV:LoadVars = new LoadVars(); // LoadVarsクラスのインスタンスを作成。 textReaderLV.load("data.txt"); //外部テキスト"data.txt" を読み込み。 textReaderLV.onLoad = function() { trace("「hoge」の値は," + textReaderLV.hoge); }; // データのロードが完了したら、function() を実行。(データロードが完了しなければ、処理が実行されないのでは?とも思うのですが、実際そうではないのでこの辺りに私の誤解があるのかもと思ったり) と理解しています。(というより上記は2と3を逆に書いていますので、本来の例題が私のような理解の仕方だと成立しないのですが、、、) 上記のような理解ですと、どこかに何らかの誤解をしているものと思うのですが、よろしければその点をご指摘いただけないでしょうか。 お時間などありましたらまた書き込みをいただけたらと思います。 よろしくお願いします。

関連するQ&A

  • 【LoadVars】変数を数値で取り出したい。

    まずは【count.txt】に事前に書き込んだ 半角の数値で書いた"0"を同じディレクトリに保存。 1フレームに下記のソースを記述。 hensu = new LoadVars(); hensu.load("./count.txt"); hensu.onLoad = function() { trace(hensu); }; プレビューすると、 traceの出力が【onLoad=%5Btype%20Function%5D】となります。 どうすれば数値で取り出せるのでしょうか??

    • ベストアンサー
    • Flash
  • flashアクションスクリプト LoadVarsについて

    はじめまして。初めて質問させていただきます。 onloadメソッドの中でロードしたデータを変数に代入したいのですが、うまくいきません。記述は以下のとおりです。 var hen; a_lv=new LoadVars(); a_lv.onLoad=function(a){ hen=this.txt } a_lv.load("b.txt"); trace(hen); 出力パネルに”undefined”と表示されてしまいます。 どうしたらうまくいきますか? 分る方いましたら、是非教えてください。

  • LoadVarsによるデータの読み込み

    現在、簡易ペイントチャットのようなものを作っています。 ログファイル名がSimpleWebNote1、 ログの中身はxb_old=100,200,300,400 といった感じです。 ログを取得し、","で区切ってSimpleWebNote1という配列に格納したいので ↓のような処理をしています。 (ログは4つありますがすべて同じような処理) load_obj = new LoadVars(); load_obj.load( "SimpleWebNote1.txt" ); load_obj.onLoad = function(){ str = load_obj(bx_old); SimpleWebNote1 = str.split(","); } そして100回前までのログを再描画するために ↓のような処理をしています。 for (var i=0; i<=100; i++){ _root.lineStyle (3, 0x000000, 100); _root.moveTo (SimpleWebNote1[i], SimpleWebNote2[i]); _root.lineTo (SimpleWebNote3[i], SimpleWebNote4[i]); } ですが、画面には何も表示されず困っています。 どこか間違っているとしたら指摘してほしいです。 この部分ができたら完成なので本当にもどかしいです。

  • イベントハンドラに処理を追加するには?

    例えばbodyタグのonloadイベントハンドラに JavaScriptを使って処理を追加するにはどうすればよいのでしょうか? 例) ・rei.htm <html>  <script language="JavaScript" type="text/javascript">  function hoge(){   alert("hogeです");  }  function foo(){   alert("fooです");  }  </script>  <body onload="hoge();">  </body>  <script language="JavaScript" type="text/javascript">  document.body.onload += foo();  </script> <html> ※前提条件として、変更可能な箇所はscriptタグ内のみとなります。 「こんなんでいけないかな?」と思って上記のようにやってみたのですがうまくいきませんでした。 (結果はfoo()のみ実行され、hoge()は実行されませんでした。 alertでbody.onloadの中身を確認すると『function anonymous{hoge();}undefined』と表示されるので、なぜfoo()が実行されてhoge()が実行されないのかよくわかりませんが‥) また試しに document.body.onload += foo(); これを以下のように変更してみました。 document.body.onload = foo(); この時は、 ・foo()の実行  ↓ ・javascriptエラー  ↓ ・hoge()の実行 となりました。(これもなぜこうなるのかよくわかりせん) 以上、イベントハンドラに最初から任意に入れられている処理を残しつつ、 さらに処理を加えるにはどうすればよいのかご教示お願いします。

  • 単一のFlashに単一のテキストファイルで複数の内容

    単一のFlashに単一のテキストファイルで複数の内容を1画面で表示させたいのですが、うまくいきません。 状況としては、【kotei1】には表示されますが、【kotei2】【kotei3】【kotei4】にはundefindと表示されてしまいます。 OS:Windows7 Flash:CS4 AS2.0 以下がASになります。 タイムライン1(全てレイヤー別に作成) ■kotei4(Layer4) ■kotei3(Layer3) ■kotei2(Layer2) ■kotei1(Layer1) 各タイムラインAS ■kotei4 System.useCodepage = true; var my_lv:LoadVars = new LoadVars(); my_lv.onLoad = function(success:Boolean) { if (success) { kotei4.text = my_lv.name4; } else { trace("Error loading/parsing LoadVars."); } }; my_lv.load("name.txt"); ■kotei3 System.useCodepage = true; var my_lv:LoadVars = new LoadVars(); my_lv.onLoad = function(success:Boolean) { if (success) { kotei3.text = my_lv.name3; } else { trace("Error loading/parsing LoadVars."); } }; my_lv.load("name.txt"); ■kotei2 System.useCodepage = true; var my_lv:LoadVars = new LoadVars(); my_lv.onLoad = function(success:Boolean) { if (success) { kotei2.text = my_lv.name2; } else { trace("Error loading/parsing LoadVars."); } }; my_lv.load("name.txt"); ■kotei1 System.useCodepage = true; var my_lv:LoadVars = new LoadVars(); my_lv.onLoad = function(success:Boolean) { if (success) { kotei1.text = my_lv.name1; } else { trace("Error loading/parsing LoadVars."); } }; my_lv.load("name.txt"); ***name.txt*** &name1=固定1 固定1を表示しています。& &name2=固定2 固定2を表示しています。& &name3=固定3 固定3を表示しています。& &name4=固定4 固定4を表示しています。& ***テキストデータsample***

  • ActionScriptで分からないことがあります。

    http://hakuhin.hp.infoseek.co.jp/main/as/import.html#IMPORT_01 の、import_01_fla08_as1.lzhについて幾つか質問です。 1.以下の部分で、LoadVarsってどういうことをするものなのでしょうか? var vars = new LoadVars (); 2.vars.load(url);ってどういう動作をしているのでしょうか? // テキストファイルを読み込む関数 function LoadTextFunc(url){ // テキストファイルを読み込む vars.load(url); _root.SetMessage("読み込み要求:" + url); } 3.以下のstr = vars.str;はどういう動作をしているのでしょうか? vars.onLoad = function(check){ if(check){ SetMessage("読み込みが完了して変数にアクセスが可能"); str = vars.str; }else{ SetMessage("読み込み失敗"); } }

    • ベストアンサー
    • Flash
  • ループ処理について

    下記のようなScriptを記述しました。 for(i = 1; i <= 4 ; i++) { trace("A") ; var fileload:LoadVars = new LoadVars(); fileload.load("b"+i+".jpg"); fileload.onLoad = function(success:Boolean) { trace("B") ; if (!success) { ok_flg = 1; } else { a.duplicateMovieClip("b"+i, i); this["b"+i].loadMovie("b"+i+".jpg") ; this["b"+i]._x += (i - 1) * 90 ; } }; } 本来ならJPEGが存在する分だけ読込むと言う処理をしたいのですが、テスト的に3ファイル用意してテストしました。 JPEGの命名規則は「b1~b3」としています。 普通のループ文であれば問題無く3件のJPEGが表示されますが、読み込みが成功したか否かの判断文を入れると動作がおかしくなります。 TRACEを入れてみたら、 A A A A B Error opening URL "file:///C|/Documents%20and%20Settings/xxxxx/デスクトップ/b4.jpg" B B B このように最初に読み込みの処理を実行し、その後に成功したか否かの判定が処理されます。 これって、正常なループの処理でしょうか?。 また、私が処理したかったようにするにはどのようなScriptにすれば良いのでしょうか?。 宜しくご教授ください。

    • ベストアンサー
    • Flash
  • LoadVarsで外部テキストファイルを読み込み数値化するには?

    初級の質問で申し訳ありません。 外部に、data.txtというファイルを用意し、中には a=1&b=2&c=3&d=4&e=5&f=6 というテキストデータのみを入れました。 (改行は入っていません。) Flashのタイムラインのフレーム1に、下記コードを記入したのですが、どうしても数値として認識してくれないようで、トレースで表示されるt5は、常に0が表示されてしまっています。 -------------------------------------- System.useCodepage = true; var Mynum = new LoadVars(); Mynum.load("data.txt"); Mynum.onload = function(success) { if (success) { t1= Mynum.a; t2= Mynum.b; t3= Mynum.c; t4= Mynum.d; t5= Mynum.e; t6= Mynum.f; } }; trace(Number(t5)) stop(); -------------------------------------- これから先、t1やt5などに数値演算をして、色々計算をさせたいのですが、どうも数値として認識されていないようです。 (パブリッシュのFlashPlayerのバージョンを5にしたり6にしたり7にしたりしてみると、表示されるトレースのt5は、0だったり、NaNだったりになってしまいます。) 外部データは全てテキストとして読まれるので、 NumberやparseIntで数値化する、とネットで調べて記載したのですが、 他に何か悪い点がありますでしょうか? ご教授頂ければ幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 引数の渡し方

    いつもお世話になっています。 外部テキスト(data.txt)を読み込んで、内容を配列(txtN)に格納、 表示するスクリプトを組んでいます。 myNameは複数あり、ボタンから渡される引数に応じて myNameを切り替えてtrace(実際には表示)させたいんですが、方法が分かりません。 以下フレームアクション //Shift-JISで読み込む System.useCodepage = true; load_obj = new LoadVars(); load_obj.load( "data.txt" ); load_obj.onLoad = function( success ){ //正常終了時、カンマで分割して配列に格納 if( success ){ my_ary = new Array(); my_ary = load_obj.myName.split(","); } txt01=my_ary[0]; txt02=my_ary[1]; txt03=my_ary[2]; txt04=my_ary[3]; trace(txt01); trace(txt02); trace(txt03); trace(txt04); }; stop(); よろしくお願いします。

    • ベストアンサー
    • Flash
  • 外部テキストをsplitで分割する時

    宜しくお願いいたします。 外部テキストをsplitで分割しようと思うのですが・・。 スクリプトはこんな感じになっています。 System.useCodepage = true; // Shift-JISのテキストを読み込む設定に変更 myText01 = new LoadVars(); // 新規LoadVarsオブジェクトmyTextの作成 txt_file01 = "text/text001.txt"; // 外部テキストファイル名を変数txt_fileに代入 myText01.load(txt_file01); // 外部テキストファイルの読み込み _root.bp=t001 //変数 myText01.onLoad = function(ok) { if (ok) { // 外部テキストファイルを読み込んだときの処理 work_txt = myText01._root.bp.split("~"); と書いて、text/text001.txtというテキストのt001という行を"~"で分割したいのですが、うまくいきません・・・。 変数でオブジェクトを指定しているのが悪いと思うのですが、何か良い方法はありますか? 何分初心者なもので・・・。 説明がわかりづらいかもしれませんが、困ってしまっているので宜しくお願いいたします。

    • ベストアンサー
    • Flash