1

イベントリスナーに基づいてどのオブジェクトが関数を呼び出すかを判断することは可能ですか? たとえば、ステージ上に 2 つのボタンがあり、クリックすると同じ機能を呼び出します。どのボタンが送信者であるかを判断する機能が欲しいです。

firstButton.addEventListener(MouseEvent.CLICK, myFunction);
secondButton.addEventListener(MouseEvent.CLICK, myFunction);

function myFunction(e:MouseEvent):void
 {
 var myString:String = "The button that called this function was (??)";
 trace(myString);
 }
4

3 に答える 3

5

EventクラスのプロパティcurrentTargetを使用する

function myFunction(e:MouseEvent):void {
 var myString:String = "The button that called this function was "+e.currentTarget;
 trace(myString);
}
于 2010-02-19T22:32:05.537 に答える
1

それに追加したいだけです:関数で取得するイベントオブジェクトには、それらを区別するために時々混乱する可能性のある2つのプロパティがあります:

e.target - ターゲットは常にイベントの元のディスパッチャーを返します。そのため、ボタンをクリックしても親をリッスンしている場合、ターゲットはボタンのままです。

e.currentTarget - currentTarget は、イベントから、または Adob​​e 言語で「イベント リスナーを使用して Event オブジェクトをアクティブに処理しているオブジェクト」に問い合わせたオブジェクトを返します。

そのため、 currentTarget と target は異なる結果を生成する可能性があり、それを覚えておく必要があります。ps イベントがバブリングしない場合 (非ビジュアル/非ユーザー インタラクション マウス イベント)、currentTarget とターゲットは同じになります。

于 2010-04-16T18:17:27.510 に答える
1

myfunction 内で、e.currentTarget は、イベントを送信したボタンへの参照を保持する必要があります。

于 2010-02-19T22:32:20.397 に答える