[AS3] stage参照でnullになるときの対処
新しく追加したムービークリップのstageプロパティを取得すると、nullが返ってくることがあります。
ちょっとはまったのでメモ。
まずはヘルプを見てみます。
表示オブジェクトのステージです。Flash アプリケーションには Stage オブジェクトが 1 つだけあります。たとえば、複数の表示オブジェクトを作成して表示リストにロードすることができます。その場合、(ロードされた SWF ファイルに表示オブジェクトが属する場合であっても) それぞれの表示オブジェクトの
stageプロパティは、同じ Stage オブジェクトを参照します。
表示オブジェクトが表示リストに追加されていない場合、stageプロパティはnullに設定されます。
なるほど![icon:star-ani01[2]](http://cocoasaurus.com/mt/mt-static/plugins/emoddy/images/star-ani01%5B2%5D.gif)
表示リストに追加されてないとnullのようです。
つまり、addChildしないとだめってことですね。
んが、しかし
var mc:MovieClip = new MovieClip();
addChild( mc );
trace( mc.stage );
addChild( mc );
trace( mc.stage );
これでもnullが返ってきます!
そんなときはADDED_TO_STAGEイベント後に参照するといい感じです。
var mc:MovieClip = new MovieClip();
addChild( mc );
mc.addEventListener( Event.ADDED_TO_STAGE, function(){ trace( mc.stage );} );
addChild( mc );
mc.addEventListener( Event.ADDED_TO_STAGE, function(){ trace( mc.stage );} );
addChildをしても即追加される訳じゃないみたいです
