2009-07-18 44 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