Flash AS3 EventDispatcher – есть ли способ получить список зарегистрированных прослушивателей?
-
12-09-2019 - |
Вопрос
Есть ли способ получить список зарегистрированных слушателей для EventDispatcher
?
я знаю это EventDispatcher
имеет hasEventListener
метод, чтобы сообщить вам, зарегистрированы ли какие-либо слушатели, но есть ли простой способ опросить EventDispatcher
узнать, какие слушатели?
Я решил сделать это одним из способов — создать подкласс EventDispatcher
чтобы отменить addEventListener
метод и сохранить слушателей в словаре, но мне это кажется неуклюжим.
Есть идеи?
Решение
Хорошо, похоже, что на этот вопрос нет другого ответа, кроме моей первоначальной идеи хранить слушателей в словаре и явно удалять их.Ну что ж...
Несколько интересных мыслей о тонкости системы AS3 Events можно найти здесь.
Другие советы
Не похоже, что это полное решение, но оно может помочь вам на вашем пути:
http://www.rialvalue.com/blog/2009/09/08/does-an-eventdispatcher-have-subscribed-listeners/
Из статьи:
Приведенный выше пример показывает, как мы можем получить ссылку на различных слушателей, объявленных в EventDispatcher и как их удалить, не имея прямой ссылки (и зная имя события Arggg).
Несмотря на то, что это может помочь вам выяснить, есть ли у EventDispatcher слушатели или нет, есть еще несколько проблем, которые вы можете найти:
* You don’t have any information about the listener * You don’t know which event the listener is listening to * We don’t know which phase the listener is listening to * Haven’t done too much testing around this, but I think both weak and strong references are hold in the list * The other thing to consider is that flash.sampler.getMemberNames only works in the debugger version of the Flash Player