2011-07-16 14 views

答えて

0

私の知る限りのリスナーを列挙する一切straightfoward方法はありません。上記のコードの

package flash.events 
{ 
    public interface IEventDispatcher 
    { 
     function addEventListener(eventName:String, 
         listener:Object, 
         useCapture:Boolean=false, 
         priority:Integer=0, 
          useWeakReference:Boolean=false):Boolean; 

     function removeEventListener(eventName:String, 
        listener:Object, 
        useCapture:Boolean=false):Boolean; 

     function dispatchEvent(eventObject:Event):Boolean; 

     function hasEventListener(eventName:String):Boolean; 
     function willTrigger(eventName:String):Boolean; 
    } 
} 

出典:http://livedocs.adobe.com/flex/3/html/help.html?content=16_Event_handling_6.html

+0

これは質問に対処していませんか?また、インターフェイスを編集すると、playerglobal.swcの組み込みのプレーヤーメソッドが破損することがあります。 – Nate

+0

@Nate:そうです、私の理解は、登録されたリスナーは、リスナーが追跡可能な方法で「登録」されていないためです呼び出されるメソッドのアドレスによって呼び出され、2つのメソッドは匿名である可能性があります。 –

0

と呼ばれるクラスの変数を作成します。

あなたはまだあなたが通常、IEventDispatcherインターフェイスのメソッドとしなければならないだろう何ができる

private var __numListeners:Number = 0;

その後、セットを作成し、その変数を編集する方法を取得... とリスナーが追加されたり、それがvarはそのメソッドを使用していることを調整削除されるたびに...

this.setNumListeners(1); or whatever 

それがアクセスすることができますthrough

trace(someObject.getNumListeners()) 
+0

私はこのことが元の質問とどのように関連しているのでしょうか? – JeffryHouser

+0

もし私が間違っていないなら、フラッシュビルダのデバッグモードについての質問があり、彼はコンポーネントに追加されたイベントリスナをトレースしたいと思っています。それが役に立たない場合、誤解をおかけして申し訳ありません。 –

+2

@SWato Singh元のポスターにはイベントリスナーのリストが必要でした。本当。しかし、元の質問には何もw/traceステートメントを行うものは何もありませんでした。トレースステートメントを有効/無効にすることで、彼が望む情報をどのように得ることができるのか分かりません。 (彼が明示的にすべてのリスナーにトレースステートメントを置かない限り)。 – JeffryHouser

-1

IEventDispatcherインターフェイスを実装しているアプリケーションのすべてのコンポーネントを編集しないと、この作業をすばやく行うことはできません。

プレイヤーがオープンソースの場合は、EventDispatcherクラスを拡張してトレースステートメントを追加できますが、そうではありません。