多くの画像を含むコンテナがあります。各画像でクリックやその他のマウスイベントのリスナーを追加する代わりに、画像の親でこれらのイベントのみをリッスンしたいと思います。
それは可能ですか?
多くの画像を含むコンテナがあります。各画像でクリックやその他のマウスイベントのリスナーを追加する代わりに、画像の親でこれらのイベントのみをリッスンしたいと思います。
それは可能ですか?
container.addEventListener(MouseEvent.CLICK, clickHandler);
private function clickHandler(e:MouseEvent):void {
trace(e.currentTarget); // references container
trace(e.target); //references container's child or container itself depending on what has been clicked
}
私があなたの質問を正しく理解していれば、それは完全に可能です。したがって、次のようなものがあると仮定します。
parent.addChild(new Child());
parent.addChild(new Child());
parent.addChild(new Child());
parent.addChild(new Child());
次に、イベントリスナーを親にバインドできるはずです。
parent.addEventListener(MouseEvent.CLICK, handleClick);
そして、ハンドラーは次のようになります
private function handleClick(e:MouseEvent) {
// cast the target of the event as the correct class
var clickedChild:Child = Child(e.target);
// Do whatever you want to do.
}
これを addEventListener の引数と組み合わせてuseCapture
、バブリング側ではなくイベントのキャプチャー側にイベントをアタッチすることもできます。また、イベントの.stopPropagation()
メソッドを使用して、他のイベント ハンドラーの起動も停止します...
しかし、何をしようとしているのかを詳しく知らずにそれらを使用する必要があるかどうかを判断するのは困難です. しかし、うまくいけば、それがあなたを正しい方向に押し進めるでしょう.