2009-09-21 8 views
9

¿Hay alguna manera de obtener una lista de oyentes registrados para un EventDispatcher?Flash AS3 EventDispatcher: ¿alguna forma de obtener una lista de oyentes registrados?

Sé que EventDispatcher tiene el método hasEventListener para decirle si hay oyentes registrados, pero ¿hay alguna manera fácil de interrogar al EventDispatcher para averiguar qué son los oyentes?

Una forma de hacerlo fue crear la subclase EventDispatcher para anular el método addEventListener y almacenar los oyentes en un diccionario, pero esto me parece torpe.

¿Alguna idea?

+0

han estado esperando algo probable, pero la solución que mencionas parece ser la única hasta ahora ... –

Respuesta

3

Ok, por lo que parece que no hay no hay respuesta a esta pregunta más que mi idea original de almacenar oyentes en un diccionario y eliminarlos explícitamente. Oh, bueno ...

Algunos pensamientos interesantes sobre el intricacies AS3 Events system can be found here.

1

No se ve como esto es una solución completa, pero puede ser que le ayudará en su camino:

http://www.rialvalue.com/blog/2009/09/08/does-an-eventdispatcher-have-subscribed-listeners/

Desde el artículo:

El ejemplo anterior muestra cómo podemos obtenga una referencia a los diferentes detectores declarados en un EventDispatcher y cómo para eliminarlos sin tener una referencia directa (y conociendo el nombre del evento arggg).

A pesar de que esto le puede ayudar a averiguar si un EventDispatcher tiene oyentes o no hay todavía un varios problemas que puede encontrar:

* 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 
+1

Eso fue útil, pero en realidad no soluciona mi problema, si solo funciona en el versión del depurador del reproductor No puedo usarlo para ninguna aplicación del mundo real ... – Reuben

Cuestiones relacionadas