|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
множественное добавление и удаление слушателей, хочу понять нюансы
Доброго!
Давно заметил, что если написать к примеру так this.addEventListener(Event.ADDED_TO_STAGE, init); this.removeEventListener(Event.ADDED_TO_STAGE, init); this.removeEventListener(Event.ADDED_TO_STAGE, init); Видимо, если слушатель удалён, то он просто игнорирует Так вот, отсюда вопрос this.addEventListener(Event.ADDED_TO_STAGE, init); this.addEventListener(Event.ADDED_TO_STAGE, init); хочу это знать, возможно поможет искать не очевидные ошибки |
|
|||||
__________________
Дети не должны знать о своих родителях |
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
там про это не сказано, лишь обмолвились тем, что будет создано два события, если useCapture у них разный
Добавлено через 8 минут просто есть момент в коде, работает всё нормально, но ели создаётся 2 события, то у меня выходит утечка памяти, хотя и крайне медленная, если нет, то всё хорошо. |
|
|||||
Что-то вы путаетесь, уважаемый, наверное не до конца понимаете как оно работает.
1. Есть событие. 2. Есть слушатель. Событие - объект Event, созданный где-то в коде и отправленный на дисптечеризацию. Слушатель - связка "Событие" + "функция", которую хранит диспетчер. (EventDispatcher) Пишем так: var d:EventDispatcher = new EventDispatcher(); d.addEventListener("myEvent", onEventCallback1); d.addEventListener("myEvent", onEventCallback2); // Слушатель 1 function onEventCallback1(e:Event):void { trace("Слушатель 1"); } // Слушатель 2 function onEventCallback1(e:Event):void { trace("Слушатель 2"); } // Пуляем ОДНО событие: d.dispatchEvent(new Event("myEvent")); Цитата:
Если сделать вот так: d.addEventListener("myEvent", onEventCallback1); d.addEventListener("myEvent", onEventCallback1); В справке об этом сказано.
__________________
Дети не должны знать о своих родителях |
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
я понимаю, что вызов будет один, вопрос в том, создадутся ли 2 слушателя или флеш, увидев, что объект уже подписан на это событие, не станет создавать его повторно
|
|
|||||
Слушатели добавляются в хэш карту. Ее фишка в том, что ключи повторяться не могут, каждый ключ уникален, в отличие от простого массива. А так как ключем там выступает ссылка на метод-обработчик, то для одного метода может быть зарегистрирован только один слушатель. Так что сколько бы ты раз не писал добавление слушателя для одного типа события и одного обработчика, он все равно будет создан только в единственном экземпляре.
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
caseyryan спасибо за развёрнутый ответ
|
Часовой пояс GMT +4, время: 21:26. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|