получить событие, когда загруженный мувиклип будет готов в правом кадре

Я разрабатываю приложение, которое использует swf для загрузки элементов и добавления свойств к загруженному swf. Я использую SWFLoader для загрузки фильма и в событии COMPLETE перемещаю загруженный MovieClip в определенный кадр, а затем перечисляю его DisplayList. Я обнаружил, что если я скоро прохожу по списку, заметка загружается. Может, с кодом чище:

loader.addEventListener(Event.COMPLETE, function(evt:Event):void{
    var mc:MovieClip = MovieClip(loader.content);
    mc.gotoAndStop(frameNumber);
    for(i = 0; i < mc.numChildren; i++){
         trace(mc.getChildAt(i));
    }
}

Я скучаю по некоторым дочерним элементам из загруженного swf, и в некоторых случаях я получаю нулевые значения. Теперь я добавил Timer (), который ждет 250 мс перед выводом списка отображения и работает, но очень медленно и неэффективно.

Другое странное поведение заключается в том, что с предыдущим фрагментом я не могу получить MovieClip даже с установленным таймером. Мне пришлось вставить функцию в загруженный swf следующим образом:

function getItems():Array{
    var res:Array = [];
    for(var i:uint = 0; i < this.numChildren; i++){
        res.push(this.getChildAt(i));
    }
    return res;
}

Получить правильный список детей.

Большое спасибо


person wezzy    schedule 03.10.2010    source источник


Ответы (1)


Вы используете класс Loader, если да? , вам необходимо добавить прослушиватель событий в загрузчика contentLoaderInfo, а не сам объект загрузчика. Это очень частая ошибка.

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(evt:Event):void{
    var mc:MovieClip = MovieClip(loader.content);
    mc.gotoAndStop(frameNumber);
    for(i = 0; i < mc.numChildren; i++){
         trace(mc.getChildAt(i));
    }
}

HTH

person George Profenza    schedule 03.10.2010
comment
Привет, я использую Flex SWFLoader (подкласс Flex класса Laoder) и жду этого события. Проблема в том, что при загрузке фильма я вызываю mc.gotoAndStop (), а затем быстро перечисляю дочерние элементы mc, когда дочерние элементы в новом кадре все еще равны нулю. - person wezzy; 04.10.2010
comment
Хорошо, теперь я знаю, какой SWFLoader, можете ли вы вместо этого попробовать использовать обработчик INIT? - person George Profenza; 04.10.2010