![]() |
Удалить загруженную флешку с загружающей флешки
С помощью Loader`а загружаю флешку. Всё старое на экране очищаю, и добавляю на область этот лоадер. Пусть он свое отработал, и теперь мне надо обратно вернутся к первоначальной флешке, для чего нужно удалить загруженную. Как это сделать?
Я, не зная вообще, могло ли такое сработать, попробовать dispatchEvent. Но видимо между двумя флешками это не работает, так как пытался даже просто trace вывести вместо удаления лоадера, и не катит. главная флешка Код AS3:
Код AS3:
|
Удалите loader из дисплейлиста
Быстро loader.parent.removeChild(loader); |
Цитата:
Код AS3:
|
событие не срабатывает, потому что подписан на него лоадер, а вещает загруженная флешка
т.е. надо или подписывать loader.content (после загрузки) или вещать всплывающее событие Код AS3:
|
Цитата:
Код AS3:
Но я бы за такой код оторвал руки. Смотрите на вариант от silin-а. |
Потише, пожалуйста, насчет отрывания рук. Я же русским по коричневому написал, что это быстро.
|
Цитата:
Из результата следует ещё один маленький вопрос: после удаления загруженной флешки со сцены, её звуки все равно продолжают проигрываться, мне их останавливать вручную перед удалением, или всё таки можно как-то закрыть эту флешку так, чтобы всё связанное с ней отвязалось? |
Из результата следует, что все осталось в аппдомене и прекрасно продолжает работать. Удалите все ссылки на дефинишины из того аппдомена, остановите таймеры и звуки и, если не использовали всякие Font.registerFont, то аппдомен выгрузится и освободит память. Воспользуйтесь Loader#unloadAndStop(), наконец.
|
Цитата:
1061: Call to a possibly undefined method unloadAndStop through a reference with static type flash.display:Loader. В ручную до удаления остановил всевозможные звуки, думал этого хватит). |
Проверьте в настройках, для какой версии Flash Player компилируете. Точно не помню, гляньте в справке в какой она появилась.
|
Функция есть начиная с Flash Player 10, а CS3 компилирует максимум для 9.
Если без этой функции, может просто остановить все звуки, потом удалить со сцены, потом loader.unload();, и loader = null? |
Удалите все ссылки на definitions, которые привнесла эта флпшка. Чем вы пользовались -- классы, методы, а также объекты этих классов, отпишитесь от прослушивания событий, вещаемых этой флешкой, точнее ее дефинишинами.
|
dimarik, а как отписка от событий экземпляров загруженных классов поможет сборщику мусора? Ведь это отправитель события держит ссылку на обработчик, а не наоборот. Или я что-то упустил?
|
Цитата:
|
Цитата:
если проектируется именно одноразовая флешка - отгыграла и все, то каким образом и кому она может нагадить, если самоудалится? я честно не понимаю, в чем тут подвохи |
Ну тут скорее логическая ошибка, чем какой-то подвох. Флешка же не сама себя добавила? Нет. Ну значит и удалять себя она тоже не должна. Иначе картина идеального мира с иерархией, полиморфизмом и бритвой Оккама рушится.
|
Цитата:
|
Цитата:
кстати, а ничего, что ради этого надо дополнительно пару-тройку объектов создать, Оккама тут как, не против ? Добавлено через 15 минут в целом оно понятно: ради гармонии (надежности) и не на такие усложнения можно пойти, целые замки из MVC строят и ничего ну а насколько оно оправданно, видимо, каждый должен сам решать, в зависимости от масштабов проекта и конкретных задач |
Цитата:
Код AS3:
Код AS3:
Код AS3:
Вот честно скажу, когда вижу parent.parent, хочется отрывать руки. А так да, произвести минимальное и оправданное количество ***нокода часто бывает лучше, чем "городить замки". |
Плохокод не может быть оправдан! =)
|
| Часовой пояс GMT +4, время: 20:44. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.