私は多くの画像を持つコンテナを持っています。各画像でクリックや他のマウスイベントのリスナーを追加する代わりに、画像の親にあるイベントだけを聞きたいと思います。ActionScript 3にはイベント委譲システムがありますか?
これは可能ですか?
私は多くの画像を持つコンテナを持っています。各画像でクリックや他のマウスイベントのリスナーを追加する代わりに、画像の親にあるイベントだけを聞きたいと思います。ActionScript 3にはイベント委譲システムがありますか?
これは可能ですか?
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()
メソッドを使用して、他のイベントハンドラも起動させないようにしてください。
しかし、あなたが何をしようとしているかについてもっと知らないでそれらを使用する必要がある場合、しかし、うまくいけば、それはあなたに正しい方向へのプッシュを与えるでしょう。
はい、それはASがバブリングをサポートしているので実行できますが、組み込みのメソッドがないため、他の人のライブラリを使用するか、ロールオーダーする必要があります。 – zzzzBov
コメントを落とすことができたら、私はそうするでしょう。 –