違いはわかりません。どちらも同じように見えますが、違いはあると思います。
どちらか一方をいつ使用するかの例をいただければ幸いです。
違いはわかりません。どちらも同じように見えますが、違いはあると思います。
どちらか一方をいつ使用するかの例をいただければ幸いです。
回答:
ベンの答えは完全に正しいです。ですから、彼の言うことを覚えておいてください。これからお伝えするのは完全な説明ではありませんが、マウスイベントと表示リストに関連してどのようe.target
にe.currentTarget
動作するかを覚えておくのは非常に簡単です。
e.target
=マウスの下にあるもの(ベンが言うように...イベントをトリガーするもの)。
e.currentTarget
=ドットの前のもの...(下記参照)
したがって、「btns」というインスタンス名を持つクリップ内に10個のボタンがあり、次のようにしたとします。
btns.addEventListener(MouseEvent.MOUSE_OVER, onOver);
// btns = the thing before the dot of an addEventListener call
function onOver(e:MouseEvent):void{
trace(e.target.name, e.currentTarget.name);
}
e.target
10個のボタンの1つにe.currentTarget
なり、常に「btns」クリップになります。
MouseEventをROLL_OVERに変更したり、プロパティbtns.mouseChildren
をfalseに設定しe.target
たりe.currentTarget
すると、どちらも常に「btns」になることに注意してください。
currentTarget
常にイベントをリッスンするオブジェクトです。target
イベントを受け取った実際のターゲットです。イベントごとのバブリングで、ターゲットはイベントを受け取り、表示リストをバブリングします。(またはイベントの取り込みのための他の方法ラウンド)
e.target
イベントディスパッチャーをトリガーするトリガーでありe.currentTarget
、リスナーを割り当てたものです。
私は視覚的な答えが好きです。
をクリックすると#btn
、2つのイベントハンドラーが呼び出され、画像に表示されているものを出力します。
ここのデモ:https : //jsfiddle.net/ujhe1key/
たとえば、単一のリスナーを使用してさまざまなアクションをトリガーする場合などに、event.targetが役立つことに注意してください。中に10個のボタンがある典型的な「メニュー」スプライトがあるとしましょう。そうする代わりに:
menu.button1.addEventListener(MouseEvent.CLICK, doAction1);
menu.button2.addEventListener(MouseEvent.CLICK, doAction2);
etc...
あなたは単に行うことができます:
menu.addEventListener(MouseEvent.CLICK, doAction);
そして、event.targetに応じてdoAction(event)内で別のアクションをトリガーします(nameプロパティなどを使用します...)
e.currentTargetは常に、イベントリスナーが追加されるコンポーネントを返します。
一方、e.targetは、コンポーネント自体、またはイベントを受け取った直接の子、孫、孫などです。つまり、e.targetは、表示リスト階層の最上位にあり、子階層またはコンポーネント自体にある必要があるコンポーネントを返します。
Canvasに複数の画像があり、Canvas以外のコンポーネント内に画像をドラッグしたい場合などに使用できます。Canvasにリスナーを追加し、そのリスナーに次のコードを記述して、Canvasがドラッグされないようにすることができます。
function dragImageOnly(e:MouseEvent):void
{
if(e.target==e.currentTarget)
{
return;
}
else
{
Image(e.target).startDrag();
}
}
target is the element that triggered the event (e.g., the user clicked on)
currenttarget is the element that the event listener is attached to.