2009-09-21 12 views
9

Esiste un modo per ottenere un elenco di listener registrati per un EventDispatcher?Flash AS3 EventDispatcher: un modo per ottenere un elenco di listener registrati?

so che EventDispatcher ha il metodo hasEventListener di dirvi se vengono registrati tutti i listener, ma c'è un modo semplice di interrogare il EventDispatcher per scoprire che cosa gli ascoltatori sono?

Un modo ho pensato di fare questo è stato quello di creare una sottoclasse EventDispatcher l'override del metodo addEventListener e memorizzare gli ascoltatori in un dizionario, ma questo si sente goffo a me.

Qualche idea?

+0

hanno desiderato qualcosa di probabile, ma la soluzione che hai citato sembra essere l'unica finora ... –

risposta

3

Ok, così sembra che ci sia nessuna risposta a questa domanda se non la mia idea originale di archiviare gli ascoltatori in un dizionario e rimuoverli esplicitamente. Oh beh ...

Alcune considerazioni interessanti sullo intricacies AS3 Events system can be found here.

1

Non sembra come questo è una soluzione completa ma potrebbe aiutarvi nel vostro cammino:

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

Dall'articolo:

L'esempio sopra mostra come possiamo ottenere un riferimento ai diversi ascoltatori dichiarato in un EventDispatcher e come rimuovere senza avere un riferimento diretto (e conoscere il nome dell'evento arggg).

Anche se questo può aiutare a capire se un EventDispatcher ha ascoltatori o no ci sei ancora diversi problemi che si possono trovare:

* 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

Questo è stato utile, ma in realtà non risolve il mio problema - se funziona solo nel versione debugger del player non posso usarla per nessuna applicazione del mondo reale ... – Reuben

Problemi correlati