インスタンスの参照 -> 変数の利用

Posted by muchag | ActionScript 3.0 |
初回投稿:2010-06-18 (金) 14:05:43 | 最終更新:2010-06-18 (金) 14:51:22

ステージ上にインスタンス(名:aaa_mc)がある
インスタンス(名:aaa_mc)の中にインスタンス(名:bbb_mc)がある

この状態でインスタンスを参照する(インスタンスにアクセスする)には
以下の3種類の方法があるようだ。

aaa_mc を参照する場合
  1. _root.aaa_mc  <----------  ドット演算子
  2.  
  3. eval("_root.aaa_mc")  <-  ドット演算子
  4.  
  5. _root["aaa_mc"]  <------- 配列アクセス演算子[/as]
  6.  
  7. <div class="flow3">bbb_mc を参照する場合</div>
  8. [as]_root.aaa_mc.bbb_mc
  9.  
  10. eval("_root.aaa_mc.bbb_mc")
  11.  
  12. _root["aaa_mc"]["bbb_mc"]

(.) をドット演算子といい、([]) を配列アクセス演算子というんだそうな。

で、問題の「変数の利用」について。

1つのシンボルから複数のインスタンスを生成した場合
aaa1_mc, aaa2_mc, aaa3_mc, ・・・ と連番にすることが頻繁にある。

これらを制御するに当たって、1つ1つ書いてもいいのだが、それはさすがに面倒くさい。

そこで、上の2行目や3行目の書式を用いて変数を利用する。

ActionScript

  1. eval("_root.aaa" + i + "_mc")
  2.  
  3. _root["aaa" + i + "_mc"]

ただし、eval関数は、Actionscript 3.0では廃止されたそうな。

それについて以下のような工夫をされている方を発見した。

  1. // eval.as
  2. package {
  3.     import flash.external.ExternalInterface;
  4.     public function eval(script:String):* {
  5.         return ExternalInterface.call('eval', script)
  6.     }
  7. }

JavaScript の eval 呼ぶだけだけど(笑)。

でも、この AS ファイルを source-path に置いておくだけ(import不要)で、気軽に eval 出来てめちゃめちゃ便利!

<引用元>
IT戦記:AS3 で eval する

<参考元>
Adobe ヘルプリソースセンター:eval 関数
Fumio Nonaka.com:ドット演算子と配列アクセス演算子

Posted by muchag | ActionScript 3.0 |
初回投稿:2010-06-18 (金) 14:05:43 | 最終更新:2010-06-18 (金) 14:51:22

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment