設計有個元件 box 偵聽 CLICK 事件
而 stage 也偵聽 CLICK 事件
當點擊 box 時,二個事件都會發生
如果要避免這樣的問題
解法很簡單,只要使用 Event 裡的 stopPropagation()
就可以中斷之後的事件, 這樣 stage 就不會接收到
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
public class EventTest extends Sprite{
public function EventTest() {
var box:Sprite = new Sprite;
box.graphics.beginFill(0xff0000);
box.graphics.drawRect(0, 0, 50, 50);
box.graphics.endFill();
box.addEventListener(MouseEvent.CLICK , onBoxClickHandler);
addChild( box );
stage.addEventListener(MouseEvent.CLICK , onStageClickHandler);
}
private function onBoxClickHandler(e:MouseEvent):void {
e.stopPropagation();
trace("onBox Click");
}
private function onStageClickHandler(e:MouseEvent):void {
trace("stage Click");
}
}
}
留言