parentの扱い
AS2.0からAS3.0の移行で感じた大きなギャップは、今のところコレが一番。
「parentの扱い」について
global変数がなくなったりroot変数の仕様が変わったりは耳にしていたので、予備知識のおかげで大した混乱もなかったものの、コイツにはマイッタ。
たとえば
「hoge_mc」の中に「inner_mc」を入れ子にして、「inner_mc」のフレームアクションに下記のスクリプトを書く
AS2.0の場合
/*inner_mc frame action vr:AS2.0*/
_parent.gotoAndStop(2) ; //hoge_mcは2フレームに移動する
AS3.0の場合 その1
/*inner_mc frame action vr:AS3.0*/
parent.gotoAndStop(2); //コンパイルエラーになる
MovieClip(parent).gotoAndStop(2); //hoge_mcは2フレームに移動する
AS3.0の場合 その2
/*inner_mc frame action vr:AS3.0*/
var parentMc:MovieClip= MovieClip(parent);
parentMc.gotoAndStop(2); //hoge_mcは2フレームに移動する
同様にparentの変数や関数にアクセスするときも
/*inner_mc frame action vr:AS3.0*/
var parentMc:MovieClip= MovieClip(parent);
parentMc.foo_var;
parentMc.foo_func;
と言う具合に型キャストが必要になる訳だけど、その理由はparentの型がMovieClipではなくDisplayObjectContainerだから、だそうです。なにかしら重要な意味があってこうなったとは思うけれど、今の自分の理解じゃあ重要な何かがなんなのかよくわからん。そのうちわかるんだろうか。
とりあえずもう、スクリプト言語じゃあ無いよな、と思う。
ま、忘れはしないだろうから、いちいちメモを取る事も無いんだけど、後から読み返して「ああ、そんな事もあったなあ」と振り返ってみるためにメモ。