ActionScript3.0でインスタンス名を調べたり設定する方法
ライブラリにおいてあるムービークリップに対して、リンゲージでActionScriptに書き出しをチェックを入れてクラス化したモノを、var 変数名:クラス名 = new クラス名();で生成して、stage.addChild(変数名);でステージに配置するのは基本だと思います。が、この一連の流れで一体どこにインスタンス名を設定するのか非常に悩んでしまいました。
単純にMovieClipを生成するだけなら、 var 変数名:MovieClip = new MovieClip();
でできちゃいます。ActionScript2以下の場合では、createEmptyMovieClipを使って空のMovieClipを生成していたと思います。
インスタンスを作成する場所.createEmptyMovieClip(インスタンス名, 深度)
第二引数にインスタンス名を設定ができ、例えばforで繰り返し生成する場合は、インスタンス名に対して「i」を連結させて連番名などにしたりしていました。さて、、ActionScript3.0ではどうするのでしょうか。。。
まず、空のMovieClipを生成した時の名前を調べました。
1 |
|
name
はActionScript2以下の場合は _name
でアンダーバーがいりましたが、ActionScript3.0ではアンダーバーがいらなくなりました。newしたMovieClipの名前をtraceしてみると instance1
と出力されました。
これをforで繰り返して生成したMovieClipにアクセスする為には「instance1」「instance2」とかのまま作られたらダメですよね。。。
そこで調べました。なんと!ActionScript2以下ではインスタンス名を調べることしかできなかったnameが、ActionScript3.0からnewしたインスタンス名に設定できることが分かりました、つまり、
1 |
|
こう書けちゃうんです!勘の鋭い方はもう分かると思いますが、forで繰り返すときは、変数名.nameに代入する文字列に対して「i」とかを連結すればOK!
1 |
|
これは、ActionScript3.0を覚える最初のほうの壁ですね。。。どなたか同じ壁にぶち当たってこれみて助かれば御の字です。
[2012/04/03追記]
名前を付けたMovieClipにアクセスするには、getChildByName(“インスタンス名”);でアクセスする事ができます。
1 |
|