好的,这是一个很好的问题,我花了一点时间才弄清楚。
基本上,Flash 做了这个奇怪的事情(可能是一个错误?),但在实际初始化对象之前运行这些函数。仅在舞台上初始化电影剪辑也会发生这种情况:
var mc:something = new something(); addChild(东西)
现在在某事中。好像你在初始化函数中有一个阶段的引用,它会给出空值。(参考: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;
}
以上是我的代码,大部分可以废掉,但主要需要注意的是: addEventListener(Event.ADDED_TO_STAGE, init); 在您的对象初始化后执行。