2009-09-21 14 views
9

Có cách nào để nhận danh sách người nghe đã đăng ký cho số EventDispatcher không?Flash AS3 EventDispatcher - bất kỳ cách nào để nhận danh sách người nghe đã đăng ký?

Tôi biết rằng EventDispatcher có phương thức hasEventListener để cho bạn biết nếu người nghe nào được đăng ký, nhưng có cách dễ dàng để thẩm vấn EventDispatcher để tìm hiểu người nghe là gì không?

Một cách mà tôi đã tìm ra để làm điều này là phân lớp EventDispatcher để ghi đè phương thức addEventListener và lưu người nghe trong từ điển, nhưng điều này cảm thấy khó chịu với tôi.

Bất kỳ ý tưởng nào?

+0

đã khao khát một điều gì đó có khả năng nhưng giải pháp bạn đã đề cập có vẻ là duy nhất ... –

Trả lời

3

Ok, vậy có vẻ như rằng có không có câu trả lời cho câu hỏi này ngoài ý tưởng ban đầu của tôi về việc lưu trữ người nghe trong một từ điển và loại bỏ chúng một cách rõ ràng. Oh well ...

Một số suy nghĩ thú vị về số intricacies AS3 Events system can be found here.

1

Nó không giống như thế này là một giải pháp hoàn chỉnh nhưng nó có thể giúp bạn trên con đường của bạn:

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

Từ bài viết:

Ví dụ trên cho thấy cách chúng ta có thể nhận được tham chiếu đến các trình nghe khác nhau được khai báo trong EventDispatcher và cách để xóa chúng mà không có tham chiếu trực tiếp (và biết tên sự kiện arggg).

Mặc dù đây có thể giúp bạn con số ra nếu một EventDispatcher có người nghe hay không vẫn còn đang một số vấn đề bạn có thể tìm thấy:

* 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

Điều đó hữu ích, nhưng nó thực sự không giải quyết được vấn đề của tôi - nếu nó chỉ hoạt động trong phiên bản trình gỡ lỗi của trình phát tôi không thể sử dụng cho bất kỳ ứng dụng thực tế nào ... – Reuben