2009-09-21 9 views
9

क्या EventDispatcher के लिए पंजीकृत श्रोताओं की सूची प्राप्त करने का कोई तरीका है?फ्लैश AS3 EventDispatcher - पंजीकृत श्रोताओं की सूची प्राप्त करने का कोई भी तरीका?

मुझे पता है कि EventDispatcher में hasEventListener विधि है जो आपको यह बताने के लिए है कि क्या कोई श्रोताओं पंजीकृत है, लेकिन क्या श्रोताओं के बारे में जानने के लिए EventDispatcher पर पूछताछ का एक आसान तरीका है?

एक ऐसा तरीका मैंने ऐसा करने के लिए EventDispatcher को addEventListener विधि को ओवरराइड करने और श्रोताओं को एक शब्दकोश में स्टोर करने के लिए उपclass करना था, लेकिन यह मेरे लिए घबराहट महसूस करता है।

कोई विचार?

+0

कुछ भी संभावना के लिए उत्सुक रहा है लेकिन आपके द्वारा उल्लिखित समाधान अब तक एकमात्र ऐसा लगता है ... –

उत्तर

3

ठीक है, तो ऐसा लगता है है कि वहाँ एक शब्दकोश में श्रोताओं को संग्रहित करने और उन्हें स्पष्ट रूप से हटाने के मेरे मूल विचार के अलावा इस प्रश्न का कोई जवाब नहीं है। ओह ठीक है ...

intricacies AS3 Events system can be found here के बारे में कुछ दिलचस्प विचार।

1

यह इस तरह नहीं दिखता है एक पूर्ण समाधान है, लेकिन यह अपने रास्ते पर आप मदद कर सकता है:

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

यह सहायक था, लेकिन यह वास्तव में मेरी समस्या का समाधान नहीं करता है - अगर यह केवल काम करता है प्लेयर के डीबगर संस्करण मैं किसी वास्तविक दुनिया अनुप्रयोगों के लिए इसका उपयोग नहीं कर सकता ... – Reuben

संबंधित मुद्दे