2011-08-12 55 views
1

我完全被這個困惑了。 Adobe Flex WindowedApplication具有「菜單」屬性,默認情況下會分配一個FlexNativeMenu實例,該實例用於爲應用程序創建本機菜單樹。如何將子菜單附加到現有的FlexNativeMenu實例?

例如,在OS X上,如果我創建了WindowedApplication,我將獲得啓動時創建的標準「應用程序菜單」,「文件」,「編輯」和「窗口」菜單。

問題是,我怎麼追加額外的菜單,而不創建一個全新的菜單?我想使用默認的OS X菜單作爲起點並添加我自己的。

如果我分配menu = new FlexNativeMenu;我只是得到一個完全空白的應用程序欄,根本沒有菜單。

回答

1

這對於Windows和Mac OS將會有所不同。我的代碼看起來是這樣的:

if (isWindows) 
{ 
    // Windows lacks a menu by default, create one. 
    menu = new NativeMenu(); 
} 
else if (isMac) 
{ 
    // Mac OS has a default menu, get a reference to it. 
    menu = NativeApplication.nativeApplication.menu; 
} 

buildMenu(menu); 

buildMenu()功能,那麼就一堆工作來建立菜單。

function buildMenu(menu:NativeMenu):NativeMenu 
{ 
    var menuItem:NativeMenuItem = menu.addItem(new NativeMenuItem("Menu Label")); 
    var menuItem.name = "menuLabelName"; 
    var menuItem.data = myDataForThisMenuItem; 
    menuItem.subMenu = buildSubMenu(); 

    return menu; 
} 

function buildSubMenu():NativeMenu 
{ 
    var subMenu:NativeMenu = new NativeMenu(); 
    var menuItem:NativeMenuItem; 

    menuItem = subMenu.addItem(new NativeMenuItem("Sub Menu Label")); 
    menuItem.name = "subMenuName"; 
    menuItem.data = subMenuData; 

    return subMenu; 
} 
+0

這看起來很有希望,不同之處在於分配'菜單= NativeApplication.nativeApplication.menu'給出以下編譯錯誤:**錯誤:NativeMenu中至不相關類型的mx:類型flash.display使用的值的隱式強制。控件:FlexNativeMenu。**任何想法? –

+0

'menu'的類型應該是'NativeMenu'而不是'FlexNativeMenu'。 – NoobsArePeople2

+0

當然,但'WindowedApplication'的'menu'屬性具有'FlexNativeMenu'類型,我無能爲力。不過,我開始認爲解決這個問題的正確方法是完全忽略'WindowedApplication.menu'並按照您的描述構建菜單,例如使用'myMenu = NativeApplication.nativeApplication.menu'作爲起點。 –

相關問題