получить событие, когда загруженный мувиклип будет готов в нужном кадре - PullRequest
1 голос
/ 03 октября 2010

Я разрабатываю приложение, которое использует SWF для загрузки элементов и добавления свойств к загруженному SWF.Я использую SWFLoader для загрузки фильма и в случае события COMPLETE я перемещаю загруженный мувиклип в определенный кадр, а затем перечисляю его 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;
}

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

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

1 Ответ

0 голосов
/ 03 октября 2010

Используете ли вы класс 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

...