- ベストアンサー
コンポーネントを配列として扱う
FlashMX2004でのコンポーネントに関して質問いたします。 コンポーネントに配列としてインスタンス名をつけ、TxtInp(i)のように扱う方法はあるのでしょうか? 簡単なことなのかもしれないのですが、ヘルプ等を見ても分からず、困っております。よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
配列ではありませんが、インスタンス名を固定の名前+通し番号で付けると、似たようなことができるかと思います。 ActionScript では、文字列からインスタンスや変数にアクセスすることができます。 文字列を参照に変換するには eval 関数か配列演算子 [ ] を使いますが、文法の都合上、[ ] の使用が推奨されているようです。 例えば TxtInp1 ~ 5 というインスタンスがある場合、 for( i = 1 ; i <= 5 ; i++ ) { trace( this[ "TxtInp" + i ]._name ); } このようにループでまとめて処理することもできます。 配列演算子を使う場合、対象が階層構造になっている(例えばムービークリップ clip の中に TxtInp1 ~ 5 がある場合など)時は、階層1つごとに1組の [ ] でくくります。 例えば、絶対パス _root.clip.TxtInp1 のコンポーネントを指定する場合は、 _root[ "clip" ][ "TxtInp1" ] スクリプトを実行する階層が _root であれば、 this[ "clip" ][ "TxtInp1" ] または、自分自身( _root )までのパスを省略して clip[ "TxtInp1" ] この中のどの表現でも、_root.clip.TxtInp1 を参照できます。 階層の考え方・this や _parent が指している対象の考え方は、普通のターゲットパスの考え方と同じです。
お礼
詳しいご説明をいただき、大変参考になりました。問題も解決いたしました。 ありがとうございました。