Flash AS3 EventDispatcher – есть ли способ получить список зарегистрированных прослушивателей?

StackOverflow https://stackoverflow.com/questions/1452539

Вопрос

Есть ли способ получить список зарегистрированных слушателей для 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top