- ベストアンサー
【AS3.0】外部テキストから配列を読み込む
- fla→PHPに変数・配列のデータを送り、下記のようなテキストデータを.txtファイルに出力するものを作成しました。
- 送られた変数・配列はすべて連なっており、&で区切られています。変数を読み込むにはURLLoaderを使用します。
- 配列を読み込む手順が分かりません。変数のみのtxtと配列のみのtxtとで出力を分けることも可能です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
参考にされたページを見て 実際にそのページに書いてある通りのことをやってみて 当然そのページに書かれてあることはできたのですよね? 思うのですが, そのページに書かれてある内容から実際に動作するものを作るには, 結構な知識や経験が必要だと思いますよ。 (つまり,書かれてある内容を見て実際に再現できるような方がするような質問でない気がします。) といわけで,当たり前ですが, そのページに書いてあることの再現方法など説明しませんよ。 (その説明の方がもっと手間と時数が必要。) そのページに書いてある状況までは当然できているものとして その続きの部分から説明します。 > 配列を読み込む手順がどうしても分かりませんでした 正確には「配列を読み込む」のではなくて, array1=1,2,3 と array2=1,2,3,4 と array3=1,2,3,4,5 という文字列データを Flash 内で配列として扱うようにするのでしょう? 何をするのかを自身の中でハッキリさせましょう。 そういった何かのセパレータ(ご質問の場合は「,(カンマ)」)で区切られた文字列を 配列にするのでしたらStringクラスのsplitメソッドでできます。 例えば var array1 = "1,2,3"; というものがあるとするなら var arr1:Array = array1.split(","); で 配列 arr1 ができます。 これでできる配列はこんなもの↓です。 arr1 =["1","2","3"]; 具体的には private function onComplete(evt:Event):void{…} の fumction 内で var arr1:Array = vars.array1.split(","); と書けば その function 内のローカルな変数 arr1 に ["1","2","3"]という配列が代入されます。 それはさておき > 変数のみのtxtと > 配列のみのtxtとで分けての出力も可能です。 これ↑の意味がわかりません。 「配列」は「配列」であってそれをテキストフィールドに表示することはできません。 「配列」を再び文字列に戻すか もしくは「配列」の各要素である文字列をテキストフィールドに表示するのであればできますが。 つまり何が言いたいかと言うと 『「配列」をテキストフィールドに表示する』ということが得たい動作の最終形でしたら 最初から『配列にする必要などない』ということです。 テキストフィールドに表示できるのは基本的に文字列だけなのですから 最初から文字列のままで良いでしょう? とにかく, 全体的になんだか変な質問だと思います。 質問になりえていない質問(スタートラインに立ててない質問)に見えます。
その他の回答 (1)
- BlurFiltan
- ベストアンサー率91% (1611/1754)
#1です。 >> 変数のみのtxtと >> 配列のみのtxtとで分けての出力も可能です。 > >これ↑の意味がわかりません。 と書きましたが,意味がわかりました。 「PHPから出力するデータを,複数に分離させて別々のファイルとして出力(用意)することも可能です。」 という意味ですね。 私が取り違えていました。すみません。 最初から変数名「var1」「var2」「array1」「array2」「array3」などがそのようになっていると決まっていて 各各データが 「文字列」「配列(配列作成用文字列)」と一定のルールを決めてあるのであれば 分離しなくても良いです。 何にしても用意されているデータは文字列データにすぎません。 それを「文字列」として扱うようにするか「配列」として扱うようにするのかを決めるのは人間です。 ルールさえ決まっていればどちらでも良いでしょう。
お礼
丁寧にありがとうございます! 言葉足らずで誤解を与えてしまって申し訳ありません... ですが、お答えいただいた方法を参考にする事で思った通りの事が出来ました! --テキスト----------------------------------------------------------------------- var1=1&var2=0&array1=1,2,3&array2=1,2,3,4&array3=1,2,3,4,5 ------------------------------------------------------------------------------------ --スクリプト-------------------------------------------------------------------- var tpcLoader:URLLoader; tpcLoader = new URLLoader(); tpcLoader.dataFormat = URLLoaderDataFormat.VARIABLES; tpcLoader.addEventListener(Event.COMPLETE,onComplete); tpcLoader.load(new URLRequest("log.txt")); function onComplete(evt:Event):void{ tpcLoader.removeEventListener(Event.COMPLETE,onComplete); var src:String = evt.target.data; var vars:URLVariables = new URLVariables(src); var1= vars.var1; var2= vars.var2; var array1Split:String=vars.array1; array1 = array1Split.split(","); var array2Split:String=vars.array2; array2 = array2Split.split(","); var array3Split:String=vars.array3; array3 = array3Split.split(","); } ------------------------------------------------------------------------------------ で、問題なく動きました。ありがとうございます!