• 締切済み

リストボックスで取得した項目の位置を新たな変数に置き換えたい

FLASH8を使用しています。 リストボックスに8つの項目があり、複数選択ができるようになっています。 on (change) { t1 = _parent.Listbox1.selectedIndices; } で、変数t1には 8,4,2,0 というような値が返ってくるようにはできたのですが、これを k1=8 k2=4 k3=2 k4=0 というように、それぞれ個別の変数に置き換えたいのです。 どうしたらできるでしょうか? どなたかご教授ください。 宜しくお願い致します。

みんなの回答

  • suzuki-_-
  • ベストアンサー率77% (152/195)
回答No.1

まず、Listbox1.selectedIndices で t1 に代入される内容は配列になっています なので、個別に参照したいのならば単純にt1[n]で可能です //例 on (change) { t1 = _parent.Listbox1.selectedIndices; //forで回して全てtrace for (var i = 0; i < t1.length; i++) { trace("t1[" + i + "]=" + t1[i]); } //配列インデックスを指定して個別trace(存在しない場合は undefined) trace("個別/" + t1[0]); } どうしてもkxのような個別変数としてもちたいならばそちらに代入します //例 on (change) { t1 = _parent.Listbox1.selectedIndices; for (var i = 0; i < 8; i++) { if (t1[i] != undefined) { //配列t1 のインデックス iが存在すれば this["k" + i] = t1[i]; trace("this.k" + i + "=" + this["k" + i]); } else { delete this["k" + i];//前回代入されている可能性があるので削除 } } //個別trace(存在しない場合は undefined) trace("個別/" + this.k0); } 上記はk0~k7までの最大8つに代入しています k1~k8にしたい場合は、文字列 k と併用している i を(i+1)に変更して下さい // ["k" + i] -> ["k" + (i+1)] // "this.k" + i -> "this.k" + (i+1) // t1に使われている i は変えない リストボックスはListコンポーネントを利用しているとして、 _root └ ListBox1 という風に配置し、ListBox1に直接on (change)を記述しているとすると、 前途記述の this は ListBox1に対する参照です また、階層の付いていない t1 も、ListBox1のt1として宣言・代入されています k0~の変数を、上記_root上の変数として扱いたい場合は、 this の部分を_rootもしくは_parent と置き換える必要があるので注意してください

すると、全ての回答が全文表示されます。

関連するQ&A