Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Несколько swf в Loader (http://www.flasher.ru/forum/showthread.php?t=211829)

Dmitriy154 16.11.2015 18:21

Несколько swf в Loader
 
Подскажите, есть приложение, открывающее любую swf из 5. Я нажимаю на кнопку с названием игры, загружается соответствующая swf через Loader. Затем я хочу для смены swf выбрать другую swf, нажимаю на кнопку, ... и у меня почему-то не получается: во-первых, звук первой swf загружается не полностью, во-вторых, добавляется на экран вторая swf, но продолжается звук первой swf. Т.е. не удаляется предыдущий Loader, пробовал удалять Loader и загружать новый, таже ерунда.
Вот часть моего кода:
Код AS3:

var loader:Loader = new Loader();
addChild(loader);
 
//value - ссылка на swf
function onClick(value:String):void
{
        /*
        if (loader.content)
        {
                removeChild(loader.content);
                loader.unload();
        }
        */

 
        loader.unload();
        loader.load(new URLRequest(xml.values[value]));
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE,ner);
}
 
function ner (e:Event):void {
        addChild(loader.content);
}


caseyryan 16.11.2015 18:34

1) В обработчике присваивай loader.content какой-то переменной, чтобы к нему был доступ. Не надо добавлять ничего вот так:
Код AS3:

addChild(loader.content);

2) Отписывайся от слушателя в обработчике
Код AS3:

loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,ner);

3) Создавай каждый раз новый Loader

п.с. Да и для остановки предыдущего есть метод unloadAndStop()

Dmitriy154 16.11.2015 22:44

Спасибо, caseyryan, частично помог метод unloadAndStop() - флешки предыдущие закрываются. Проблема у меня, наверное, в том, что некоторые флешки написаны на as2 (as1) и неправильно воспроизводятся. Пробовал AVM1Movie, не получилось, ну и да ладно.
Код AS3:

function ner (e:Event):void {
        loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,ner);
        // или var swf:AVM2Movie = AVM2Movie(loader.content);
        var swf:MovieClip = MovieClip(loader.content);
        addChild(swf);
}


caseyryan 17.11.2015 06:14

Цитата:

Код AS3:

var swf:MovieClip = MovieClip(loader.content);


Ну и в чем разница с предыдущим подходом? Эта переменная так же доступна только в обработчике.
Переменную нужно держать снаружи


Часовой пояс GMT +4, время: 10:05.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.