• ベストアンサー

外部から読み込んだテキストを切り替える方法

1.外部テキストを読み込む 2.ボタン1、ボタン2、ボタン3をクリックすると、   テキストフィールドに表示される文字が   各1~3までの変数を読み込んで切り替わる。  (ボタンの数と表示するテキストの数は同じ) …という内容をやってみようと考えてるのですが、 こちらは技術的に可能なのでしょうか? 読み込む変数の数だけテキストフィールドは必要になりますか? テキストファイルを個別に分けて切り替える…という手法は、 たくさんあったのですが、変数で切り替える方法がわからず、 どなたかご教授くださると助かります。

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

  • ベストアンサー
  • joy_28
  • ベストアンサー率84% (45/53)
回答No.1

anzunyaさん、 簡単なAS2.0で説明します。 -外部mess.txtに、例えば、以下のように記載: &mess1=1番目のmess& &mess2=2番目のメッセージです& &mess3=3番目のメッセージと意見です。& &kazu=3& -FLA側の記載内容:第一フレームのscriptレイヤーに記載 //ここから //初期設置領域 var max:Number;//メッセージの数の変数定義 _txt.text = "";//インスタンス名 _txtのダイナミックテキストのロード時の初期値は、ブランク var mess_array:Array = new Array();//配列定義 //System.useCodepage = true;//mess.txtのコードが、UTF-8で記載されてない場合は、これが必要、されていれば、不要 //LoadVarsクラスの設置領域 var lv:LoadVars = new LoadVars(); lv.onLoad = function():Void { mess_array[0] = "";//要素番号0は、以下のfor文では、定義されないので、ここで、ブランクで定義しておく→なくてもいいですが、気持悪い場合は、こうする max = Number(this.kazu);//文字列の数値化 for (var i:Number = 1; i<=max; i++) { mess_array[i] = this["mess"+i];//配列に、外部mess.txtの変数の中身を格納する } pickUp();//外部mess.txtの読み込みが終了したなら、下のカスタム関数を始動させる }; lv.load("mess.txt"); //lv.load("mess.txt?"+getTimer());//サーバーアップ時は、ブラウザーのキャッシュ対策として、こちらを使用する。ローカルでは、エラー発生 function pickUp() {//ごちゃごちゃするので、このように、カスタム関数化して、外出しにしておくといいでしょう。 btn1.onRelease = function():Void { _txt.text = mess_array[1];//配列要素番号の1番(→この場合は、"1番目のmess")を抽出して、_txt.textに代入 }; btn2.onRelease = function():Void { _txt.text = mess_array[2]; }; btn3.onRelease = function():Void { _txt.text = mess_array[3]; }; /*今回は、ボタンが3つですが、多くなった場合は、以下のように、for文を使うほうが良いです for (var i:Number = 1; i<=max; i++) { this["btn"+i].id = i;//iを、動的に生成したプロパティ id に保管 this["btn"+i].onRelease = function():Void { _txt.text = mess_array[this.id];//this.idで配列要素を抽出 }; } */ } //ここまで 以上で、ボタンを押す都度、該当メッセージが表示されます。

anzunya
質問者

お礼

わかりやすい説明をありがとうございます。 こちらの内容で試してみますね!助かりました~。

関連するQ&A

専門家に質問してみよう