[AS]functionの中のfunctionのthisについての注意
関数の中に関数を入れた場合(関数クロージャというらしい)、中の関数でのthisの扱いには注意が必要。
例えば。。。
//フレームアクション function main(){ trace(this); //mc赤い四角定義 var mc = new MovieClip(); mc.graphics.beginFill(0xFF0000); mc.graphics.drawRect(0,0,100,100); mc.graphics.endFill(); sub(); //関数クロージャ(たぶん) function sub(){ trace(this); addChild(mc); } } main();
上記を実行すると100×100の赤い四角がx:0,y:0の位置に表示される。
ここで注意したいのが、function subの中のaddChild(mc);
これは本来の文法的にはDisplayObjectContainer.addChild(mc)
DisplayObjectContainerが記載されてないから、thisになるのか、
と思うとそうでもない。。。
this.addChild(mc)
これはエラーになります。
finction sub()のthisと、function main()のthisはtrace結果を見ると違うものです。
よって、関数クロージャのaddChild(~)は、thisが省略されてるわけではないってことで。
※この例では”メインのタイムライン”になっているみたい。(フレームアクションなので)
Tweet