Ошибка прослушивателя событий Flash AS3 - PullRequest
0 голосов
/ 07 ноября 2011

У меня есть этот бит кода AS3. он загружает внешний файл .swf и должен воспроизводить его. Я добавил прослушиватель событий для запуска при загрузке файла. Функция, которую она вызывает, перемещает видео в самый нижний слой, поэтому кнопки по-прежнему отображаются, а затем воспроизводит файл. Проблема в том, что прослушиватель событий никогда не срабатывает. Может ли кто-нибудь помочь? Заранее спасибо.

Dave

    var loadit:Loader = new Loader();
    var load_request:URLRequest = new URLRequest("http://www.friedmanllp.com/video/intro.swf");
    loadit.addEventListener(Event.COMPLETE, onCompleteHandler);
    //swfLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler);
    //loadit.load(load_request);

    function onCompleteHandler(loadEvent:Event) {
        addChildAt(loadEvent.currentTarget.content, 1);
        loadit.load(load_request);
    }

Ответы [ 4 ]

3 голосов
/ 07 ноября 2011

Несколько вещей не так.

Во-первых, ваш загрузчик никогда не загрузится, потому что вы никогда не просили об этом.Вы закомментировали вызов метода load.

Также слушайте crooksy88.Вам необходимо прослушать свойство contentLoaderInfo для события завершения.Прослушивание экземпляра Loader не будет отправлять искомое событие.

Также предупреждение - убедитесь, что ваша переменная loadit не собирает мусор!Если код, который вы опубликовали, выполняется в рамках вызова функции, то вам нужно сохранить свой экземпляр Loader где-нибудь (например, в переменной экземпляра), чтобы убедиться, что он остается в памяти.:

var load_request:URLRequest = new URLRequest("http://www.mydomain.com/mySubFolder/myExternal.swf");
var loadit:Loader = new Loader();
loadit.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler);
loadit.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
loadit.load(load_request);

function onProgressHandler(event:ProgressEvent):void
{
    trace("onProgressHandler(event)");
}

function onCompleteHandler(event:Event):void
{
    trace("onCompleteHandler(event)");
    addChildAt(loadit, 1);
}
0 голосов
/ 10 ноября 2011

Короткая версия на основе Пальцы

var loadIt:Loader = new Loader();
on(loadIt.contentLoaderInfo).complete += function (e:Event) {
    addChildAt(e.currentTarget.content, 1);
}
loadIt.load(new URLRequest("http://www.friedmanllp.com/video/intro.swf"));
0 голосов
/ 08 ноября 2011

Я решил это с помощью Event.INIT:

    var loadit:Loader = new Loader();
    var load_request:URLRequest = new URLRequest("http://www.friedmanllp.com/video/intro.swf");
    loadit.contentLoaderInfo.addEventListener(Event.INIT, onCompleteHandler);  
    loadit.load(load_request);

    function onCompleteHandler(loadEvent:Event) {
        addChildAt(loadEvent.currentTarget.content, 1);
    }
0 голосов
/ 07 ноября 2011

Попробуйте это ...

loadit.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...