如何将子菜单附加到现有FlexNativeMenu实例?

时间:2011-08-12 16:41:14

标签: flex menu air adobe

我对此完全感到困惑。 Adobe Flex WindowedApplication具有“菜单”属性,默认情况下会为其分配一个FlexNativeMenu实例,该实例用于为应用程序创建本机菜单树。

例如,在OS X上,如果我创建WindowedApplication,我会在启动时创建标准的“应用程序菜单”,“文件”,“编辑”和“窗口”菜单。

问题是,如何在不创建全新菜单的情况下追加其他菜单?我想使用默认的OS X菜单作为起点并添加我自己的菜单。

如果我指定menu = new FlexNativeMenu;,我只会得到一个完全没有菜单的应用栏。

1 个答案:

答案 0 :(得分: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;
}