2012-07-17 49 views
1

我有一個彈出窗口,我想關閉它在鼠標外點擊。所以我做了事件的收聽者MouseDownOutside。但它只聽左鍵單擊。我也想關閉它右鍵點擊,但如果我右擊彈出,然後它應該打開。我在谷歌搜索,但第二次它沒有任何解決方案。有沒有人知道關閉彈出窗口的方法?想要在彈出窗口之外聽右鍵單擊。

這樣一個彈出的創建代碼如下所示

var myPopUp:CustomComponentClass = new CustomComponentClass(); 
PopUpManager.addPopUp(myPopUp, Parent, true); 
PopUpManager.centerPopUp(myPopUp); 

關閉彈出窗口

PopUpManager.removePopUp(myPopUp); 

在此先感謝

回答

1

我會嘗試這樣的事:

stage.addEventListener(MouseEvent.RIGHT_MOUSE_DOWN,onRightMouseDown); 

function onRightMouseDown(e:MouseEvent):void 
{ 
    var point:Point = popup.globalToLocal(new Point(stage.mouseX,stage.mouseY)); 

    if(!pointInside(popup,point)) 
    { 
    PopUpManager.removePopUp(popup); 
    } 
} 

pointInside函數只是檢查點是否在彈出框的矩形內。

public function pointInside(obj:DisplayObject, point:Point):Boolean 
{ 
    return (point.x >= 0 && point.y >= 0 && point.x <= obj.width && point.y <= obj.height); 
} 
+0

你會這麼做......怎麼樣? – 2012-07-17 14:28:00

+1

添加了一個函數,因爲該點已轉換爲顯示對象的局部座標,只需檢查0,0和寬度高度就可以做到,或者getBounds(stage).contains(x,y)可用於檢查點是否也在裏面。 – 2012-07-17 14:42:58

相關問題