![]() |
После removeEventListener обработчик продолжает вызываться
Собственно заголовком все сказано, исходник ниже. Из вне создается несколько таких объектов. Я не могу догнать вобще как такое случилось, что после removeEventListener у меня продолжается вызываться обработчик.
обратите внимание на блок с trace("before", death.id) по trace("after", death.id); Код AS3:
before 10 before 13 before 99 before 2 before 51 before 127 before 126 before 128 after 10 after 13 after 99 after 2 after 51 after 127 after 126 after 128 after 128 after 126 after 128 after 127 after 126 after 128 after 51 after 127 after 126 after 128 after 2 after 51 after 127 after 126 after 128 after 99 after 2 after 51 after 127 after 126 after 128 after 13 after 99 after 2 after 51 after 127 after 126 after 128 Дабы хоть как-то решить вопрос пришлось сделать проверку на то, произошла ли уже загрузка в объекте или нет. Где я накосячил никак не могу понять :wacko: |
Видимо проблема в том что сам объект типа DeathImage несколько раз добавляется на сцену, или добавляется несколько объектов типа DeathImage подряд, и при каждом
Код AS3:
Короче по ходу не в этом классе проблема, а в том что добавляет этот самый DeathImages на сцену. |
Да, таких объектов добавляется подряд несколько, и каждый объект подписывается на данное событие и при получении события отписывается.
В итоге что получается, после того как первый объект от события отписался, второй следом подписался, предыдущий тоже оказывается подписанным? Я что-то запутался, видимо пора спать. |
Для каждого объекта в отдельности, при его добавлении на сцену будет срабатывать его же __addedToStage.
|
Ну, да, а при чем здесь __addedToStage?
|
Сделайте вот так при добавлении слушателя:
Код AS3:
Код AS3:
|
Добавление нескольких прослушивателей с одиниковым типом, обработчиком и целевой фазой не приводят к дополнительной регистрации прослушивателя, поэтому это не имеет смысла вовсе.
|
Либо в __imagesLoadComplete ссылка на controls.images это уже ссылка на другой объект и вы не того отписываете, либо вы его опять где-то подписываете на это событие.
В любом случае из этого куска кода не понять. |
Цитата:
Вобщем пришлось решать проблему тем, чтобы каждый экземпляр класса юзал отдельный controls.images, а не один и тот же. Ибо получается, что подпись на событие экземпляра controls.images подписывает также все другие экземпляры DeathImage, которые уже отписались от него. Честно говоря для меня это поведение неожиданность. Я считал что подпись осуществляется в пределах экземпляра класса, к которому принадлежит обработчик. Неужели это не так? |
Цитата:
|
| Часовой пояс GMT +4, время: 09:59. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.