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

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

noname#35109の回答

  • ベストアンサー
noname#35109
noname#35109
回答No.2

#1です。 myNameは複数あり、… の意味がわかりました。変数myNameの "要素" がたくさんあるのかと思ってしまっていました。 myNameのような "変数" 自体がたくさんあるわけですね。 それで,スクリプトは一応書かれているもので動作するのでしたか。 "要素" がたくさんあるのかと思っていたので,for文かな? と思った次第です。 どうも失礼しました。 そして,配列アクセス演算子([ ] )で自己解決されたわけですか。 #1の for文内の左辺も配列アクセス演算子を使用しています。 _root["txt0"+(i+1)] = my_ary[i]; _rootのあとに「.」(ドット)はありません。 これで,変数自体をさらに動的に変えられます。 しかし…, ということは,……??? ボタンクリックによって違うフレームに行って, そしていちいちそのフレームに戻って,スクリプトを実行させているということなのですか。 それは変だと思います。 動きも変ですが,1回目でロードは完了しているのに,何度も同じ「data.txt」ロードさせるのも無駄ですね。 一応解決はされたみたいですが, 質問はまだ継続されているようなので,私ならこうするだろうという例を書いておきます。 お礼で書いてくださっているスクリプトはなるべくそのままで, また,とりあえず for文 などループも使わないというパターンで書きます。 メインムービー(_root) の フレーム1 などに書くスクリプトです。 -------------------------------- //Shift-JISで読み込む System.useCodepage = true; //メインのタイムラインを止める(不要??) stop(); //ロードされたかどうかのフラグを設置 var load_flag = 0; //LoadVarsインスタンスの生成 load_obj = new LoadVars(); //インスタンスにLoadVars.onLoadメソッドを定義 load_obj.onLoad = function(success) { //正常終了時 ロードされたかどうかのフラグを1にする if (success) { _root.load_flag = 1; } }; //LoadVars.loadを実行 load_obj.load("data.txt"); //グローバル関数 「showData」 の定義 _global.showData = function(globalName) { 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; }; --------------------------------- そして,ボタンのスクリプトには下のように書きます。 (例:山田さんデータ表示ボタンの場合) --------------------------------- on (release) { //ロードされたかどうかのフラグが1であれば if (_root.load_flag == 1) { //関数showData (引数:"yamada") を実行 showData("yamada"); } } --------------------------------- ロードは1回で良いので先に済ませておきます。 そして,その 「ロードされたデータの中から必要なものを取り出す。」 という部分をボタンで実行するわけです。 この 「ロードされたデータの中から必要なものを取り出す。」 という部分だけをユーザー定義関数にしておけば, その関数をボタンから何度でも呼び出せます。 また,引数も渡せます。 > 「質問:引数の渡し方」 やっと,ご質問の題名までたどりつくことができた気がします。 ユーザー定義関数は, function showData(){ //「ロードされたデータの中から必要なものを取り出す。」 } みたいに,単なる function に定義しても良いです。 でも,ボタンなどの階層などが良くわからなかったので, 上のスクリプトはグローバル関数にしてみました。 「関数とメソッドについて」 http://livedocs.macromedia.com/flash/8_jp/main/00001285.html 「グローバル関数とタイムライン関数の定義」 http://livedocs.macromedia.com/flash/8_jp/main/00001292.html 要はグローバル関数にしておけば定義済関数のように使えるわけです。 例えば,  gotoAndPlay(); や stop(); や play(); など… これらは定義済み関数です。これらのように,  showData("yamada"); と言う感じで, 自分が定義した関数がそのファイルが開いているうちはずっと使えます。 また引数も渡せます。 ちなみに,_global.showData = function() の { } 内を もう少し簡素にして for文にすると, --------------------------------------- _global.showData = function(globalName) { my_ary = new Array(); //カンマで分割して配列に格納 my_ary = load_obj[globalName].split(","); base_mc.loadPhoto_mc.loadMovie("photo/"+globalName+".jpg"); base_mc.num_mc.num = my_ary[0]; //txt_mに変数を代入 for (var i = 1; i<=4; i++) { base_mc["txt00"+i+"_m"].txt = my_ary[i]; } }; --------------------------------------- と,こんな感じになります。 --//--//--//--//--//--//--//-- それと,「data.txt」内のデータですが, 改行の前に & を入れる方が無難です。 yamada=あああ,いいい,ううう &tanaka=あああ,いいい,ううう &yamamoto=あああ,いいい,ううう       ↓↓↓ yamada=あああ,いいい,ううう& &tanaka=あああ,いいい,ううう& &yamamoto=あああ,いいい,ううう 私は#6で回答していますが,こういう事例もあるので参考までに。 質問:テキスト入力での文字の判定 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1906190   ↑教えて!goo ↓OKWave (同じです) http://okwave.jp/kotaeru.php3?q=1906190

macosmx
質問者

お礼

お返事が遅くなり申し訳ありません。 上記の内容でうまくいきました。ありがとうございました。

関連する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)一次元でも二次元でも格納できる引数の指定方法 をご存じの方、ぜひお教え願います。><