Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.11.2015, 18:21
Dmitriy154 вне форума Посмотреть профиль Отправить личное сообщение для Dmitriy154 Найти все сообщения от Dmitriy154
  № 1  
Ответить с цитированием
Dmitriy154

Регистрация: Feb 2014
Сообщений: 192
Attention Несколько 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);
}

Старый 16.11.2015, 18:34
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
1) В обработчике присваивай loader.content какой-то переменной, чтобы к нему был доступ. Не надо добавлять ничего вот так:
Код AS3:
addChild(loader.content);
2) Отписывайся от слушателя в обработчике
Код AS3:
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,ner);
3) Создавай каждый раз новый Loader

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

Старый 16.11.2015, 22:44
Dmitriy154 вне форума Посмотреть профиль Отправить личное сообщение для Dmitriy154 Найти все сообщения от Dmitriy154
  № 3  
Ответить с цитированием
Dmitriy154

Регистрация: Feb 2014
Сообщений: 192
Спасибо, 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);
}

Старый 17.11.2015, 06:14
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Код AS3:
var swf:MovieClip = MovieClip(loader.content);
Ну и в чем разница с предыдущим подходом? Эта переменная так же доступна только в обработчике.
Переменную нужно держать снаружи

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:34.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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