Flash AS3 EventDispatcher - une façon d'obtenir une liste des auditeurs inscrits?
-
12-09-2019 - |
Question
Est-il possible d'obtenir une liste des auditeurs inscrits pour un EventDispatcher
?
Je sais que EventDispatcher
a la méthode hasEventListener
pour vous dire si des écouteurs sont enregistrés, mais est-il un moyen facile d'interroger le EventDispatcher
pour savoir ce que les auditeurs sont?
Une façon je me suis dit de le faire était de sous-classe EventDispatcher
pour remplacer la méthode addEventListener
et stocker les auditeurs dans un dictionnaire, mais cela se sent maladroit pour moi.
Toutes les idées?
La solution
Ok, donc il semble qu'il n'y ait pas de réponse à cette question autre que mon idée originale de stocker les auditeurs dans un dictionnaire et les supprimer explicitement. Eh bien ...
Quelques réflexions intéressantes sur la système subtilités AS3 des événements se trouve ici .
Autres conseils
Il ne ressemble pas à cela est une solution complète, mais il pourrait vous aider sur votre chemin:
http: // www.rialvalue.com/blog/2009/09/08/does-an-eventdispatcher-have-subscribed-listeners/
De l'article:
L'exemple ci-dessus montre comment nous pouvons obtenir une référence aux différents auditeurs a déclaré dans un EventDispatcher et comment de les enlever sans avoir directement référence (et connaître le nom de l'événement arggg).
Même si cela peut vous aider à savoir si un EventDispatcher auditeurs ou non sont encore plusieurs problèmes que vous pouvez trouver:
* 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