本主题描述如何创建 AIR 所支持的各种类型的本机菜单。
创建根菜单对象
若要创建 NativeMenu 对象来充当菜单的根,请使用 NativeMenu 构造函数:
var root = new air.NativeMenu();
对于应用程序菜单和窗口菜单,根菜单表示菜单栏,并且应当只包含打开子菜单的项目。上下文菜单和弹出菜单没有菜单栏,因此根菜单可以包含命令和分隔线以及子菜单。
在创建菜单之后,可以添加菜单项。除非使用菜单对象的
addItemAt()
方法在给定索引处添加项目,否则项目以添加顺序出现在菜单中。
将菜单分配为应用程序、窗口、或图标菜单,或将其显示为弹出菜单,如以下几节所示:
设置应用程序菜单或窗口菜单
您的代码中应包含应用程序菜单(受 Mac OS 支持)和窗口菜单(受其他操作系统支持),这很重要
var root = new air.NativeMenu();
if (air.NativeApplication.supportsMenu)
{
air.NativeApplication.nativeApplication.menu = root;
}
else if (NativeWindow.supportsMenu)
{
nativeWindow.menu = root;
}
注:
Mac OS 定义了一个菜单,其中包含可用于每个应用程序的标准项目。将新 NativeMenu 对象分配给 NativeApplication 对象的
menu
属性可以替换标准菜单。还可以使用标准菜单,而不是替换它。
Adobe Flex 提供了 FlexNativeMenu 类,用于方便地创建跨平台工作的菜单。如果您使用的是 Flex 框架,请使用 FlexNativeMenu 类,而不要使用 NativeMenu 类。
设置停靠栏图标菜单或系统托盘图标菜单
air.NativeApplication.nativeApplication.icon.menu = root;
注:
Mac OS X 为应用程序停靠栏图标定义了标准菜单。在将新 NativeMenu 分配给 DockIcon 对象的 menu 属性时,该菜单中的项目将显示在标准项目之上。不能删除、访问或修改标准菜单项。
以弹出方式显示菜单
root.display(window.nativeWindow.stage, x, y);
创建子菜单
若要创建子菜单,请将 NativeMenuItem 对象添加到父菜单,然后将定义子菜单的 NativeMenu 对象分配给该项目的
submenu
属性。AIR 提供了两种方式来创建子菜单项及其关联的菜单对象:
可以使用
addSubmenu()
方法在一个步骤中创建菜单项及其相关的菜单对象:
var editMenuItem = root.addSubmenu(new air.NativeMenu(), "Edit");
也可以创建菜单项,然后单独将菜单对象分配给其
submenu
属性:
var editMenuItem = root.addItem("Edit", false);
editMenuItem.submenu = new air.NativeMenu();
创建菜单命令
若要创建菜单命令,请将 NativeMenuItem 对象添加到菜单,然后添加一个事件侦听器来引用实现菜单命令的函数:
var copy = new air.NativeMenuItem("Copy", false);
copy.addEventListener(air.Event.SELECT, onCopyCommand);
editMenu.addItem(copy);
可以在命令项本身上侦听
select
事件(如本例中所示),也可以在父菜单对象上侦听
select
事件。
注:
表示子菜单和分隔线的菜单项不调度
select
事件,因此不能用作命令。
创建菜单分隔线
若要创建分隔线,请创建 NativeMenuItem,并在构造函数中将
isSeparator
参数设置为
true
。然后,将分隔符项目添加到菜单中的正确位置:
var separatorA = new air.NativeMenuItem("A", true);
editMenu.addItem(separatorA);
不显示为分隔符指定的标签(如果有)。
|
|
|