FlashLite 1.0/1.1 ActionScript memo (変数のパス問題)

Flash LiteActionScriptはFlash4の”アクション”相当である。何度も愚痴を書いているように、Flash5以降とは作法が全然違うので特に注意が必要である。変数のパスなども注意が必要なものの一つだ。いじっていて気がついたパスの扱いについてちょいとメモしておこうと思う。


hogehoge = "hogahoga";
tellTarget("/hoge_mc"){
hogehoge = "fugafuga";
}
trace(hogehoge);

ステージ上にhoge_mcというムービークリップがある状態でこのスクリプトを実行すると、


hogahoga

と出力される。ここでActionScriptに慣れた身だと、何だ、hogehoge = "fugafuga";はローカル変数か、と思ってしまう。しかしながら、実際は、


trace(/:hoge_mc.hogehoge);
とすると

fugafuga
となってアクセス可能であることが分かる。つまり、/:hogehogeと/:hoge_mc.hogehogeというふたつの変数がある、という事。MXでもこういう変数はあるけれど、グローバル/ローカルで考えていると混乱の元になる。

これらふたつの変数はパスの違いによって見分けることになる。tellTargetなどで階層が込み入ってくると、パスが混乱してバグの元になるので注意。変数のパスを確認しておかないと、変数の指定ミスが起こる。

*ちなみに、


trace(hoge_mc.hogehoge);
と書いてもアクセスできるのだが、/:が必要か必要で無いかはどうやって見分ければ良いのか…???。Flash MXが内部で置き換えてくれているのだろうか?それともFlashLiteでのみ可能なのだろうか??