設計有個元件 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"); } } }
留言