2012-01-10 13 views
1

私は多くの画像を持つコンテナを持っています。各画像でクリックや他のマウスイベントのリスナーを追加する代わりに、画像の親にあるイベントだけを聞きたいと思います。ActionScript 3にはイベント委譲システムがありますか?

これは可能ですか?

+1

はい、それはASがバブリングをサポートしているので実行できますが、組み込みのメソッドがないため、他の人のライブラリを使用するか、ロールオーダーする必要があります。 – zzzzBov

+5

コメントを落とすことができたら、私はそうするでしょう。 –

答えて

7
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 
} 
+0

マウスなどで動作しますか? – Francisc

+0

はい、すべてのタイプの 'MouseEvent'で動作します – package

+0

ありがとう、パッケージ。 – Francisc

1

私はあなたの質問を正しく理解している場合、それは完全に可能です。そして、あなたは以下のようなものを親にイベントリスナーをバインドすることができるはず

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()メソッドを使用して、他のイベントハンドラも起動させないようにしてください。

しかし、あなたが何をしようとしているかについてもっと知らないでそれらを使用する必要がある場合、しかし、うまくいけば、それはあなたに正しい方向へのプッシュを与えるでしょう。

+0

マウスオーバーで機能しますか? – Francisc

+1

@Franciscはい... –

+0

ありがとう、32bitkid。 – Francisc

関連する問題