Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Удалить загруженную флешку с загружающей флешки (http://www.flasher.ru/forum/showthread.php?t=195021)

TurboDizel 26.02.2013 23:23

Удалить загруженную флешку с загружающей флешки
 
С помощью Loader`а загружаю флешку. Всё старое на экране очищаю, и добавляю на область этот лоадер. Пусть он свое отработал, и теперь мне надо обратно вернутся к первоначальной флешке, для чего нужно удалить загруженную. Как это сделать?
Я, не зная вообще, могло ли такое сработать, попробовать dispatchEvent. Но видимо между двумя флешками это не работает, так как пытался даже просто trace вывести вместо удаления лоадера, и не катит.
главная флешка
Код AS3:

var loader....//тут создаю, загружаю и так далее
loader.addEventListener("end_of_loader", f_eol);
 
function f_eol(e:Event):void {
  trace("Дошло");
}

В подгружаемой флешке, когда её нужно удалить, пишу:
Код AS3:

dispatchEvent(new Event("end_of_loader"));


dimarik 27.02.2013 01:58

Удалите loader из дисплейлиста
Быстро loader.parent.removeChild(loader);

TurboDizel 28.02.2013 21:08

Цитата:

Сообщение от dimarik (Сообщение 1122609)
Удалите loader из дисплейлиста
Быстро loader.parent.removeChild(loader);

Попробовал что-то такое:
Код AS3:

parent.removeChild(this);

Выдает ошибку: 2069 Класс Loader не реализует этот метод.

silin 28.02.2013 23:18

событие не срабатывает, потому что подписан на него лоадер, а вещает загруженная флешка
т.е. надо или подписывать loader.content (после загрузки) или вещать всплывающее событие
Код AS3:

dispatchEvent(new Event("end_of_loader", true));


incoob 28.02.2013 23:58

Цитата:

Сообщение от TurboDizel (Сообщение 1122942)
Попробовал что-то такое:
Код AS3:

parent.removeChild(this);

Выдает ошибку: 2069 Класс Loader не реализует этот метод.

Скорее всего сработает
Код AS3:

parent.parent.removeChild(parent);

. Таким образом вы удалите loader из display list (как и предлагал выше dimarik).

Но я бы за такой код оторвал руки. Смотрите на вариант от silin-а.

dimarik 01.03.2013 00:20

Потише, пожалуйста, насчет отрывания рук. Я же русским по коричневому написал, что это быстро.

TurboDizel 01.03.2013 00:23

Цитата:

Сообщение от silin (Сообщение 1122974)
событие не срабатывает, потому что подписан на него лоадер, а вещает загруженная флешка
т.е. надо или подписывать loader.content (после загрузки) или вещать всплывающее событие
Код AS3:

dispatchEvent(new Event("end_of_loader", true));


Действительно, большое спасибо!

Из результата следует ещё один маленький вопрос: после удаления загруженной флешки со сцены, её звуки все равно продолжают проигрываться, мне их останавливать вручную перед удалением, или всё таки можно как-то закрыть эту флешку так, чтобы всё связанное с ней отвязалось?

dimarik 01.03.2013 00:47

Из результата следует, что все осталось в аппдомене и прекрасно продолжает работать. Удалите все ссылки на дефинишины из того аппдомена, остановите таймеры и звуки и, если не использовали всякие Font.registerFont, то аппдомен выгрузится и освободит память. Воспользуйтесь Loader#unloadAndStop(), наконец.

TurboDizel 01.03.2013 00:56

Цитата:

Сообщение от dimarik (Сообщение 1122987)
Из результата следует, что все осталось в аппдомене и прекрасно продолжает работать. Удалите все ссылки на дефинишины из того аппдомена, остановите таймеры и звуки и, если не использовали всякие Font.registerFont, то аппдомен выгрузится и освободит память. Воспользуйтесь Loader#unloadAndStop(), наконец.

Да вот как только написал вопрос, сразу нашел unloadAndStop(), но то ли CS3 не знает такой функции, то ли я что-то не так делаю, но выдает ошибку:
1061: Call to a possibly undefined method unloadAndStop through a reference with static type flash.display:Loader.
В ручную до удаления остановил всевозможные звуки, думал этого хватит).

dimarik 01.03.2013 01:02

Проверьте в настройках, для какой версии Flash Player компилируете. Точно не помню, гляньте в справке в какой она появилась.


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

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