Хорошо, это хороший вопрос, мне потребовалось немного времени, чтобы разобраться в этом.
В основном Flash выполняет эту странную вещь (возможно, ошибку?), Но запускает функции перед фактической инициализацией объектов.Это происходит с инициализацией мувиклипов только на сцене:
var mc: кое-что = новое что-то ();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); выполняетсяпосле инициализации ваших объектов.