Flash AS3 EventDispatcher - есть ли способ получить список зарегистрированных слушателей? - PullRequest
9 голосов
/ 21 сентября 2009

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

Я знаю, что EventDispatcher имеет метод hasEventListener, чтобы сообщить вам, зарегистрированы ли какие-либо слушатели, но есть ли простой способ опросить EventDispatcher, чтобы узнать, кто такие слушатели?

Один из способов сделать это - создать подкласс EventDispatcher, чтобы переопределить метод addEventListener и сохранить слушателей в словаре, но мне это кажется неуклюжим.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 24 сентября 2009

Хорошо, так что, похоже, нет ответа на этот вопрос, кроме моей первоначальной идеи сохранения слушателей в Словаре и их явного удаления. Ну да ладно ...

Некоторые интересные мысли о тонкостях системы AS3 Events можно найти здесь .

1 голос
/ 21 сентября 2009

Не похоже, что это законченное решение, но оно может помочь вам на вашем пути:

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
...