わかりました、これは良い質問です。理解するのに少し時間がかかりました。
基本的に、Flash はこの奇妙なこと (おそらくバグ?) を行いますが、実際にオブジェクトを初期化する前に関数を実行します。これは、ステージ上だけでムービークリップを初期化する場合にも発生します。
var mc:something = 新しい何か(); addChild(何か)
今something.asで、初期化関数のステージへの参照があるかのように、nullが返されます。(参考:http ://www.emanueleferonato.com/2009/12/03/understand-added_to_stage-event/ )
したがって、基本的に同じ問題を取り上げて urlLoader に拡張すると、実際に階層ステージを構築する前にコードが実行されます->ムービークリップ
この問題を解決するには、子 swf で次のようにします。
import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.display.MovieClip;
addEventListener(Event.ADDED_TO_STAGE, init);
function init(event:Event){
trace("test");
stage.addEventListener(KeyboardEvent.KEY_DOWN, moveBox);
var testMC:test = new test();
addChild(testMC);
}
function moveBox(event:KeyboardEvent){
trace("a");
testMC.x += 11;
}
上記は私のコードです。ほとんどのコードを破棄できますが、主な注意点は次のとおりです。オブジェクトが初期化された後に実行されます。