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

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

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

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

Есть идеи?


person Reuben    schedule 21.09.2009    source источник
comment
тоже ждал чего-то вероятного, но решение, о котором вы упомянули, похоже, пока единственное...   -  person Theo.T    schedule 21.09.2009


Ответы (2)


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

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

person Reuben    schedule 24.09.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
person Ryan Guill    schedule 21.09.2009
comment
Это было полезно, но на самом деле это не решает мою проблему - если это работает только в отладочной версии плеера, я не могу использовать его для каких-либо реальных приложений... - person Reuben; 22.09.2009