• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:引数の渡し方)

引数の渡し方について知りたい

noname#35109の回答

noname#35109
noname#35109
回答No.1

「data.txt」の中のデータを myName=ああ,いいい,う,えええ としておくと, 書かれているスクリプトそのままのコピペでうまく trace されましたよ。 質問に書かれているそのままでもちゃんと trace されましたので, スクリプトはだいたい合っていると思います。 ちょっと順番が変だと思うのと, for文でスッキリさせる方法と, 後のために変数のパスを _root にした場合で, 参考までに次に書いておきます。 ------------------------------------------ //Shift-JISで読み込む System.useCodepage = true; //先にストップ stop(); load_obj = new LoadVars(); load_obj.onLoad = function(success) { //正常終了時、カンマで分割して配列に格納 if (success) { my_ary = new Array(); my_ary = load_obj.myName.split(","); for (i=0; i<=3; i++) { _root["txt0"+(i+1)] = my_ary[i]; trace(_root["txt0"+(i+1)]); } } }; //最後にロード load_obj.load("data.txt"); ------------------------------------------ 参考URL: 「LoadVarsオブジェクトを使った外部テキストファイルの読込み」 http://www.fumiononaka.com/TechNotes/Flash/FN0303007.html  より引用。  > LoadVars.onLoadメソッドの定義をまず行ってから、  > LoadVars.loadを実行するのが確実です。 質問の文章で >> myNameは複数あり、… と書かれている意味がよくわかりませんし, スクリプトではなくて,「data.txt」の中のデータの書き方が変なのではないでしょうか? ひょっとして, myName=ああ,myName=いいい,myName=う,myName=えええ とか言うような形なのですか? これではさっぱりダメですよ。 でも,もしそうだとすると,次のようなスクリプトでできることはできます。 ------------------------------------------ //Shift-JISで読み込む System.useCodepage = true; stop(); load_obj = new LoadVars(); load_obj.onData = function(success) { //正常終了時、カンマで分割して配列に格納 if (success != undefined) { my_ary = new Array(); my_ary = success.split(","); for (i=0; i<=3; i++) { _root["txt0"+(i+1)] = my_ary[i]; trace(_root["txt0"+(i+1)]); } } }; load_obj.load("data.txt"); ------------------------------------------ 私が回答したものではありませんが, 参考URL:「外部テキスト読み込み」 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1668616   ↑教えて!goo  ↓OKWave (同じです) http://okwave.jp/kotaeru.php3?q=1668616 できないこともありませんけど, このあと,どうやってそれを使うのでしょうか? trace されるのは myName=ああ myName=いいい myName=う myName=えええ こんなのです。 この後の処理が面倒です。 以上までが一区切りですね。 「data.txt」の中のデータをどうされているのかをまず確認してみてください。 ========================================== >> (実際には表示)させたい 上の2例では, _root (メインムービーのステージ上) に変数 txt01 ~ txt04 をセットしています。 ですから, _root に "変数名" が txt01 ~ txt04 のダイナミックテキストのテキストフィールドを置くと, 上のスクリプトの場合, txt01 という変数名のテキストフィールドには 「ああ」 txt02 という変数名のテキストフィールドには 「いいい」 txt03 という変数名のテキストフィールドには 「う」 txt04 という変数名のテキストフィールドには 「えええ」 が表示されます。 ここまで見ておそらく気づかれていると思いますが, 変数名は txt01 txt02 … という形より txt1 txt2 … という形の方が良いです。 for文ももっとシンプルに for (i=0; i<=3; i++) { _root["txt"+(i+1)] = my_ary[i]; trace(_root["txt"+(i+1)]); } とできますし, これで,変数が10以上になった場合でも i<=3;  を i<=1000; に変えるだけで, txt1~txt1000 までの変数が自動的に作成されますし, 後の管理も簡単になります。

macosmx
質問者

お礼

ありがとうございます。 ループに関してはとりあえず本体が出来てからという感じで後回しにしていました。 すみません。質問が分かり難かったでしょうか。 >> myNameは複数あり、… >と書かれている意味がよくわかりませんし, >スクリプトではなくて,「data.txt」の中のデータの書き方が >変なのではないでしょうか? >ひょっとして, 実際のデータは yamada=あああ,いいい,ううう &tanaka=あああ,いいい,ううう &yamamoto=あああ,いいい,ううう というデータになっています。 それで、ボタンをクリックして該当の人物の内容をテキストエリアに読み込むというスクリプトなんです。 ループ処理はしていませんが、とりあえず以下のようなスクリプトで動きました。 //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[globalName].split(","); } //配列を変数に num=my_ary[0]; txt01=my_ary[1]; txt02=my_ary[2]; txt03=my_ary[3]; txt04=my_ary[4]; //txt_mに変数を代入 base_mc.loadPhoto_mc.loadMovie("photo/"+globalName+".jpg"); base_mc.num_mc.num=num base_mc.txt001_m.txt=txt01 base_mc.txt002_m.txt=txt02 base_mc.txt003_m.txt=txt03 base_mc.txt004_m.txt=txt04 }; //一旦、メインのタイムラインを止める stop(); ボタンから変数を渡す時に my_ary = load_obj[globalName].split(",");の load_objの後に「.」を入れているとundefinedが返ってくるのでしばらく悩んでしまいました。 メンテナンスのことも考えるとやはりループ処理した方がいいですよね。 いかんせん初心者なもので、一つづつクリアして最後にカタチにするような感じになってしまっています。もう少し慣れて最初からある程度の形を作れるように頑張ります。

関連するQ&A

  • 単一の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***

  • 外部テキストファイルでは文字間隔が反映されません

    初心者です。 外部テキストファイルを読み込んで、プロパティ上で文字間隔を設定しておりますが、文字間隔が反映されません。 フレームアクションは以下のように設定しております。 以下のサイトよりコピペで貼り付けました。 http://support.adobe.co.jp/faq/faq/qadoc.sv?228629+002 System.useCodepage = true; var my_lv:LoadVars = new LoadVars(); my_lv.onLoad = function(success:Boolean) { if (success) { my_txt.text = my_lv.textContent; } else { trace("Error loading/parsing LoadVars."); } }; my_lv.load("myExternalText.txt"); どのようにしてよいのかわかりません。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 外部テキスト読み込み

    外部テキストを読み込んで そのテキストの中に、検索したい文字列が入っているかどうかが知りたいのですが、上手くいきません ソース System.useCodepage = true; my_lv = new LoadVars(); my_lv.onLoad = function() { find_num = my_lv.indexOF("検索したい文字列"); trace(find_num); }; my_lv.load("date.txt");

    • ベストアンサー
    • Flash
  • 読み込んだテキストを Split で分割する

    おはようごさいます。 過去の質問も色々拝見したのですが解決しなかったので、質問させていただきます。 以下の内容のテキストファイル、samp.txt を読み込み(改行コードはLFのみ)、 &txt = 123 456 789& それを split で改行で区切って、配列 my_ary に入れたいと思っております。(以下ソース) System.useCodepage = true; this.loadVariables("samp.txt"); this.onData = function() { my_ary = new Array(); my_ary = txt.split("\n"); }; stop(); デバッカで確認したところ“txt”の値は読み込めるのですが、 my_ary がいつも undefind になってしまいます。 何が原因なのかさっぱり分りません。 またこのソースでは、テキストを読み込むのに loadVariables を使っておりますが、LoadVars を使用して同じ事をした場合、my_ary 配列の値を LoadVarsオブジェクト名.onLoad = function(… 内以外から参照することは出来ますでしょうか? (例えば別のフレームやムービークリップなどから) 続けざまの質問で非常に恐縮ではありますが宜しくお願いいたします。 環境 OS:winXP Flash:MX2004

    • ベストアンサー
    • Flash
  • テキストファイルの読込について

    _rootの1フレーム目に以下のActionScriptを記述しました。 this.stop (); myLoadVars = new LoadVars(); myLoadVars.onLoad = function(Success) { if (Success) {   trace("result="+_root.result);  } }; myLoadVars.load("test.txt"); test.txtの中身は以下です。 result=test 実行したところ、結果は result=undefined でした。 result=testにならないのはなぜなのでしょうか?

    • ベストアンサー
    • Flash
  • 【LoadVars】変数を数値で取り出したい。

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

    • ベストアンサー
    • Flash
  • 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]); } ですが、画面には何も表示されず困っています。 どこか間違っているとしたら指摘してほしいです。 この部分ができたら完成なので本当にもどかしいです。

  • 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”と表示されてしまいます。 どうしたらうまくいきますか? 分る方いましたら、是非教えてください。

  • 配列の並べ替えのやりかたを教えてください

    適当に 5,1,3,2,4,6 と書かれたテキストがあるとして、 これらの数字を大きい順に並べかえるにはどう 記述すればいいか教えていただけないでしょうか? もともとの並びから任意の数字を参照するところまでは わかりました。よろしくお願いします。 ================================================================ loadLV = new LoadVars(); //LoadVarsオブジェクトを作成 ranking=Array //配列を用意 loadLV.onData = function(data){ ranking = data.split(","); //コンマ区切りでデータを配列 trace("「" + ranking[0] + "」"); //5が出力されます }; loadLV.load("ranking.txt"); //テキストの読み込み

    • ベストアンサー
    • Flash
  • C#で、引数における一次元と二次元配列の取り扱い

    C#について質問させていただきます。 以下のようにすればそれぞれ一次元配列と二次元配列を格納出来ますが 同時に一つの引数に収めることは無理なのでしょうか?    public static void Join(string[] Ary_str){ 本文 }    public static void Join(string[ , ] Ary_str){ 本文 } そのために、例えば以下のようにしたとします。    public static void Join(object Ary_obj){ 本文 } こうすれば一次元でも二次元でも格納出来ますが 格納された値が何次元配列なのか確認するために    Ary_obj.Rank としてもエラーになってしまいます。 (1)Objectに格納した値が何次元配列なのか確認する方法か (2)一次元でも二次元でも格納できる引数の指定方法 をご存じの方、ぜひお教え願います。><