Автоматическое удаление всех потомков и прослушивателей
Всем привет,
Давайте представим такую ситуацию, что Вы создали страничку. На ней много картинок, кнопок с прослушивателями, пользовательский курсор да еще и прицепленный к stage ENTER_FRAME. Вы ее посмотрели и захотели закрыть. Сделав так: page = null, у нас в итоге все прослушиватели остануться висеть в памяти. Тогда что удалять каждый прослушиватель ручками? Нет это не наш путь, нам ведь так лениво! Вместо кропотливой писанины по удалению прослушивателей давайте лучше будем наследовать все классы где установлены прослушиватели от класса Basic. Тогда используя addEL можно устанавливать прослушиватели и заодно их регистрировать. А для очистки страницы используем метод free(page). Хотел добавить эту запись в блог, чтобы тема не потерялась, но видно не судьба... Код AS3:
|
Для этого просто пишутся методы деструкторы, зануляющие все ненужное и удаляющие все слушатели.
Цитата:
|
Ужас.
1. Подписываться на ENTER_FRAME у stage в наследнике DisplayObject бессмысленно. ENTER_FRAME в него и так приходит. 2. Достаточно было переписать addEventListener / removeEventListener и не городить addEL / removeEL 3. Для useCapture создается отдельный слушатель, в вашем же случае удастся подписаться или с useCapture или без, но не вместе. 4. Класс объекта можно получить через: Код AS3:
6. Словите RTE, если в Basic будет добавлен наследник DisplayObject, которому добавили свойство bitmapData или наследник Shape, которому добавили свойство numChildren. Цитата:
|
Меня вот всегда интересовал вопрос: почему массив _listeners в EventDispatcher-е приватный, и разработчики не сделали к нему доступ, хотя бы через геттер. Не понимаю, чем это могло быть плохо?
|
|
Goodguy
Чтобы удалить прослушиватели, надо отловить момент удаления объектов прослушивателей. А так все под рукой и можно даже не писать деструкторы. Alatar 2. Да я не хочу переписывать их, так как они по-моему будут быстрее работать, если надо просто ручками удалять. 3. Не понимаю этот useCapture, всегда использую false и поэтому так все реализовал 4.Спс 5. Согласен использование Basic, налагает ряд ограничений, так как не все моменты охвачены. -Не знал, что один BitmapData можно сразу нескольким картинкам назначить. Обычно каждой делаю свою. Можно убрать этот dispose, после removeChild сборщик все равно уберет. -Класс могут наследовать только обьекты с numChildren. Bitmap хоть и имеет addEventListener, но у него не будут удаляться прослушиватели. Хотя это вроде можно реализовать. Но по мне так можно просто не вешать на такие объекты события. Mayakwd СПС большое! - |
Цитата:
|
goodguy
их - это объекты прослушивателей. Спс изменил... mayakwd Цитата:
|
Цитата:
|
Цитата:
|
Часовой пояс GMT +4, время: 21:45. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.