2011-12-05 95 views
0

我創建一個菜單是這樣的:Flex:菜單不會自動隱藏?

myMenu = Menu.createMenu(null, myMenuXMLListCollection, false); 

,然後顯示它:

myMenu.popup(10, 10); 

但是當我點擊菜單之外的某處菜單不會自動消失。

  • 有沒有辦法讓菜單在我點擊外面時自動消失?
+0

您可以將監聽器添加到舞臺點擊,並且如果點擊的x,y不在菜單內,請將其隱藏。 – Joe

回答

4

收聽SandBoxMouseEventMOUSE_UP_SOMEWHERE在沙箱根上。您可以使用SystemManager獲取沙盒根。 getSandboxRoot

所以,添加事件偵聽器,像這樣:

systemManager.getSandBoxRoot.addEventListener(SandboxMouseEvent.MOUSE_UP_SOMEWHERE, myMouseUpHandler); 

,然後在事件處理程序,只需要檢查,如果目標是菜單,如果不隱藏菜單:

protected function myMouseUpHandler(event:SandboxMouseEvent):void{ 
    if(event.target != myMenuInstance){ 
    myMenuInstance.visible = false; 
    // or whatever other action you wish to take to hide the menu. 
    } 
} 

這是Flex ComboBox在鼠標單擊時用來隱藏下拉菜單的一般方法。

+0

非常感謝你非常非常Flextras.com :)(lifesaver):) –

+0

最受歡迎,樂於幫忙! – JeffryHouser