|
|
|||||
Регистрация: Oct 2007
Сообщений: 85
|
Чистка листенеров
Есть ли какой-нибуть универсальный код чтобы удалял неиспользуемые листенеры?
У меня в мувике много кадров, на 1 ENTER_FRAME и на следующем, если не удалить его перед тем как перейти на какой-нибуть другой, а то вылезет ошибка. Как-нибуть так чтобы ALLremoveEventListener(...) или что-нибуть из рода 'если листенер не существует или это другой кадр то выполняется функция по удалению'?? Помогите кто может) |
|
|||||
Я бы воспользовался флагами, есть листенер true, нету false. Т.е я так понимаю что надо удалять те которые уже отработали своё? Вот и меняем в конце каждого приёмника по окончанию выполнения задачи значение флага после запускаем таймер и чистим.
Добавлено через 4 минуты или вообще, всю конструкцию на один ентерФрэйм повесить.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь! |
|
|||||
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
а я бывоспользовался слабой ссылкой, что уже давно с успехом делаю
Это позволит сборщику мусора, при отсутствии объекта, на который повешан слушатель, удалить сам слушатель. Ну и естественно стоит воспользоваться предыдущими советами Последний раз редактировалось goodguy; 25.11.2010 в 09:19. |
|
|||||
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
зато не будет привязки к объекту + как я уже сказал, воспользоваться предыдущими советами. Все в связке будет работать отлично.
Кстати в официальной справке от адоби рекомендуется все энтер фрейм слушатели делать слабой ссылкой, чтобы избежать возможных утечек памяти |
|
|||||
Регистрация: Feb 2010
Сообщений: 95
|
По поводу проверки - есть метод hasEventListener
|
|
|||||
Слабые ссылки - это костыли, которые не всегда и работают. Я бы сделал сеттеры вот такие:
public function set enterFrame(value:Boolean):void { _enterFrame = value; if (value) addEventListener("enterFrame", onEnterFrame); else removeEventListener("enterFrame", onEnterFrame); } А вообще, топикстартер, не советую писать в кадрах. И вообще, зачем вы пихаете enterFrame в первый кадр и следующий, если он успеет выполниться только один раз?
__________________
тут я |
|
|||||
Цитата:
С таким сеттером было бы что-то типа: "при смене вкладки переключить на нужный листенер а остальные вырубить", а так у меня получилось что-то корявое, но работающее)) |
Часовой пояс GMT +4, время: 16:59. |
|
« Предыдущая тема | Следующая тема » |
|
|