2009-07-18 130 views

回答

6

您可以使用FlexMouseEvent.MOUSE_DOWN_OUTSIDE事件。例如:

myPopup.addEventListener(
    FlexMouseEvent.MOUSE_DOWN_OUTSIDE, 
    function(mouseEvt:FlexMouseEvent):void 
    { 
     PopUpManager.removePopUp(myPopup); 
    } 
); 
+3

的FlexMouseEvent.MOUSE_DOWN_OUTSIDE如果用PopUpManager中添加组件,而不是如果你做一个手动的addChild(请参见http然而刚刚播出://www.mail -archive.com/[email protected]/msg14875.html,看看我最后一小时的拉毛) – iddqd 2010-03-18 17:04:40

2
stage.addEventListener(MouseEvent.CLICK, stgMouseListener, false, 0, true); 

... 

private function stgMouseListener(evt:MouseEvent):void 
{ 
    trace("click on stage"); 
} 


private function yourComponentListener(evt:MouseEvent):void 
{ 
    trace("do your thing"); 
    evt.stopPropagation(); 
} 
0

从Senocular得到这个。我认为这适用于这个主题,至少它对我有用。 jedierikb提出的建议似乎是一样的,但有点不完整。

防止事件传播

如果你想阻止事件的进一步传播,您可以使用stopPropagation()(flash.events.Event.stopPropagation())或stopImmediatePropagation事件侦听器内,这样做停止()(flash.events.Event.stopImmediatePropagation())。这些方法是从传入事件监听器的Event对象中调用的,并且基本上阻止了事件的发生 - 至少在那之后。

stopPropagation可以防止超出当前范围的任何对象接收事件,并且这可以在事件的任何阶段内。 stopImmediatePropagation执行相同的操作,但也需要额外的步骤来防止接收事件的当前目标中的其他事件发生。因此,在stopPropagation会阻止精灵A的父节点接收事件的情况下,stopImmediatePropagation将阻止精灵A的父节点以及监听精灵A的任何其他侦听程序接收事件。

示例:使用stopPropagation和stopImmediatePropagation ActionScript代码之间切换:

var circle:Sprite = new Sprite(); 
circle.graphics.beginFill(0x4080A0); 
circle.graphics.drawCircle(50, 50, 25); 
addChild(circle); 

circle.addEventListener(MouseEvent.CLICK, clickCircle1); 
circle.addEventListener(MouseEvent.CLICK, clickCircle2); 
stage.addEventListener(MouseEvent.CLICK, clickStage); 

function clickCircle1(evt:MouseEvent):void { 
    evt.stopPropagation(); 
    // evt.stopImmediatePropagation(); 
    trace("clickCircle1"); 
} 
function clickCircle2(evt:MouseEvent):void { 
    trace("clickCircle2"); 
} 
function clickStage(evt:MouseEvent):void { 
    trace("clickStage"); 
} 

点击圈,看到了事件是如何停止了与每个方法。 stopPropagation防止从接收到该事件的阶段,而stopImmediatePropagation也从识别事件

正常输出防止clickCircle2

clickCircle1 
clickCircle2 
clickStage 

stopPropagation输出

clickCircle1 
clickCircle2 

stopImmediatePropagation输出

clickCircle1