伝播するイベント
では,
円がクリックされると,
次に,
このようにイベントは複数の表示オブジェクトを順番に伝わっていきます。イベントがターゲットである円に到達したときをターゲット段階といいます。ターゲットから親に向かって伝播していく段階のことを,
伝播を止めるには
イベント伝播の仕組みが分かったところで,
1つの方法として,
s.addEventListener("click", function(event:MouseEvent):void {
removeChild(s);
// 親に伝播しないようにする
event.stopPropagation();
});
この結果,
イベントオブジェクトのプロパティを利用する
しかし,
答えは簡単です。clickHandler()メソッドで,
private function clickHandler(event:MouseEvent):void {
// ステージ以外がクリックされたときには何もしない
if(event.target != stage) {
return;
}
他の方法も考えられます。イベントオブジェクトには,
private function clickHandler(event:MouseEvent):void {
// ターゲット段階以外では何もせず終了する
if(event.eventPhase != EventPhase.AT_TARGET) {
return;
}
円をクリックした場合には,
キャプチャ段階について
ここでは触れませんでしたが,
キャプチャ段階はターゲット段階の手前の処理です。Stageオブジェクトから始まり,
まとめ
今回は,
次回は,