• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Flash 外部テキスト読み込み 配列)

Flashで外部テキストを配列として読み込み、日別の%を出力する方法

このQ&Aのポイント
  • Flash初心者が外部テキストを配列として読み込み、日別のパーセンテージを出力する方法を教えてください。
  • Flashであらかじめ用意した%をテキストに、区切りで保存しています。しかし、テキストをうまく分割できず困っています。
  • 現在の月と日を取得し、地域別のファイルから該当する日のパーセンテージを取得して出力したいです。配列の操作が苦手で、どなたか教えてください。

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

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

こちらのご質問に気づかず, もう1つの「Flash 外部テキスト読み込み 配列」の方に回答した者ですが, > //率の取得 > this.loadVariables("sa" + "_" + month + "." + "txt"); > ritu = sapporo.split(","); > this.loadVariables("se" + "_" + month + "." + "txt"); > ritu = sendai.split(","); ここに問題がありすぎると思います。 loadVariables で外部txtファイルを読み込んで, 即,ritu = sapporo.split(","); のように そのデータを操作することは不可能です。 そんなにすぐには外部テキストを読み込めません。 読み込まれていないデータの処理は不可能です。 loadVariables ではなくて, LoadVarsクラスのメソッドを使うべきだと思います(Flash MX以降)。 あと, > ritu = sapporo.split(","); > ritu = sendai.split(","); このように,同じ ritu という変数に違う値を代入しても, 値が順次更新されていくだけで, 最後の ritu = sendai.split(","); しか値が残りません。 それと > sapporo =ritu[day]; > sapporo.text = "sapporo"; これがイミフメイです。 sapporo というインスタンス名のダイナミックテキストに, ritu[day] を表示させたいのではないかと推測しますが, それだと,もっと単純に, sapporo.text=ritu[day]; で行けますよ。 スクリプトから想像するに, 例えば「sa_1.txt」には, sapporo=53,20,31,81,13,89,56,21,45,69,89,91,63,46,54,58,… というような形のデータが入っていて, 「se_1.txt」には, sendai=41,88,22,83,47,12,78,69,71,20,87,56,47,58,71,23,… というような形のデータが入っているのですよね。 以上のように想像してみて, 書かれているスクリプトを書き替えてみました。 次のようにすればうまく行くと思います。 ------------------------------------------ // まず先にストップ stop(); //文字コード設定の変更 System.useCodepage = true; //現在月日の取得 now_date = new Date(); tmpYoubi = "日月火水木金土"; month = now_date.getMonth()+1; day = now_date.getDate(); weekday = tmpYoubi.charAt(now_date.getUTCDay()); // //---率の取得------- // 読み込んだ個数カウンタの初期値を設定 var count = 0; // LoadVars インスタンスの作成 myLV = new LoadVars(); // // 1つのファイルがロードされたとき myLV.onLoad = function(Success) { // 読み込みに成功したら if (Success) { // 個数カウンタの値に1を加算 _root.count++; // もし個数カウンタが2になれば if (_root.count == 2) { // ユーザ定義関数 showData を実行 showData(); } } }; // // myLV に外部データのロード myLV.load("sa"+"_"+month+"."+"txt"); myLV.load("se"+"_"+month+"."+"txt"); // // ユーザ定義関数 showData() の定義 function showData() { // 配列 ritu の作成(二次元配列) var ritu = new Array(); ritu[0] = myLV.sapporo.split(","); ritu[1] = myLV.sendai.split(","); // テキストの表示 sapporo.text = ritu[0][day-1]; sendai.text = ritu[1][day-1]; } ------------------------------------------- ご質問で書かれているスクリプトの大きな問題は,split ではありません。 ロード待ち処理が抜けているということと, 無意味に同じ変数に違う値を次々に代入していっているということです。

masamasu
質問者

お礼

sassakun様ご丁寧な回答誠にありがとうございます。助かりました。 配列がいまだ不慣れで最初理解に困りましたが、何度も見ているうちに少しずつわかってきました。本当に感謝しております!!

関連するQ&A