包 | flash.display |
类 | public class NativeMenu |
继承 | NativeMenu EventDispatcher Object |
子类 | ContextMenu |
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
AIR 配置文件支持:所有桌面操作系统均支持此功能,但移动设备或 AIR for TV 设备不支持此功能。您可以使用 NativeMenu.isSupported
属性在运行时测试是否受支持。有关在多个配置文件之间支持 API 的详细信息,请参阅 AIR 配置文件支持。
本机菜单是一种由操作系统(而不是您的应用程序)控制和调出的菜单。AIR 支持下列类型的本机菜单:
-
应用程序菜单,OS X 支持此类型的菜单。使用
NativeApplication.supportsMenu
属性测试主机操作系统是否支持应用程序菜单。应用程序菜单显示在 Mac 桌面顶部的菜单栏中。OS X 为每个应用程序都提供了一个默认菜单,但其中许多菜单命令不起作用。您可以向默认项添加事件侦听器,替换单个菜单和项目或甚至替换整个默认菜单。使用 NativeApplicationmenu
属性访问应用程序菜单对象。 -
窗口菜单,Windows 和 Linux 支持此类型的菜单。使用
NativeWindow.supportsMenu
属性测试主机操作系统是否支持窗口菜单。窗口菜单显示在窗口标题栏的底部。菜单所占用的区域不是窗口舞台的一部分。应用程序无法进入此区域。使用 NativeWindowmenu
属性将菜单分配给窗口。 -
停靠图标菜单,OS X 支持此类型的菜单。使用
NativeApplication.supportsDockIcon
属性测试主机操作系统是否支持停靠图标。停靠图标菜单中的项显示在操作系统提供的默认项的上方。应用程序代码无法访问这些默认项。将菜单分配给应用程序的 DockIcon 对象的menu
属性。 -
系统任务栏图标菜单,Windows 和大部分 Linux 操作系统都支持此类型的菜单。使用
NativeApplication.supportsSystemTrayIcon
属性测试主机操作系统是否支持系统任务栏图标。右键单击系统任务栏图标即可显示该图标菜单,这与上下文菜单的形式基本相同。将菜单分配给应用程序 SystemTrayIcon 对象的menu
属性。 -
上下文菜单,所有操作系统都支持此类型的菜单。例如,在应用程序中显示的 InteractiveObject 上右键单击或按住 Command 键单击时,作为对用户界面事件的响应,将显示上下文菜单。用于显示菜单的 UI 机制会随主机操作系统和硬件的不同而有所差异。将菜单分配给 InteractiveObject 的
contextMenu
属性。在 AIR 中,可使用 NativeMenu 类或 ContextMenu 类创建上下文菜单。在 Flash Player 中,只能使用 ContextMenu 类。在 AIR 中,ContextMenus 不包含内置项;不显示默认的上下文菜单。 -
弹出菜单,所有操作系统都支持此类型的菜单。弹出菜单与上下文菜单的功能相同,但是弹出菜单要使用菜单
display()
方法才能显示,而不是作为对用户界面事件的响应显示。弹出菜单不会附加到任何其他对象中。仅创建本机菜单和调用display()
方法。
菜单对象包含菜单项。菜单项可表示命令、子菜单或分隔线。使用 addItem()
或 addItemAt()
方法向菜单中添加菜单项。菜单项的显示顺序与菜单的 items
数组中的项的显示顺序匹配。
要创建子菜单,可向父级菜单对象添加一个菜单项。将表示子菜单的菜单对象分配给父级菜单中匹配菜单项的 submenu
属性。
注意:窗口的根菜单和应用程序菜单必须只包含子菜单项;不表示子菜单的项可能不予显示,这些项与用户对这些菜单类型的预期相反。
当选择了菜单中的命令项或其子菜单之一时,菜单将调度 select
事件。(子菜单和分隔符项不可选择。)事件对象的 target
属性将引用所选项目。
在显示菜单前的一瞬间并且按下附加到菜单项之一的等效键时,菜单调度 preparing
事件。您可以根据应用程序的当前状态使用此事件来更新菜单内容。
注意:如果正在使用 Flex Framework,请考虑使用 FlexNativeMenu 类。以声明方式在 MXML 中定义菜单通常比编写 ActionScript 代码来逐项创建菜单结构更简单。
相关 API 元素
flash.display.NativeMenuItem
flash.display.NativeWindow.menu
flash.desktop.DockIcon
flash.desktop.SystemTrayIcon
flash.desktop.NativeApplication.menu
flash.desktop.NativeApplication.icon
mx.controls.FlexNativeMenu
属性 | 由以下参数定义 | ||
---|---|---|---|
constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | ||
isSupported : Boolean [静态] [只读]
表示客户端系统上是否支持任何形式的本机菜单。 | NativeMenu | ||
items : Array
此菜单中 NativeMenuItem 对象的数组。 | NativeMenu | ||
numItems : int [只读]
此菜单中 NativeMenuItem 对象的数量。 | NativeMenu | ||
parent : NativeMenu [只读]
父菜单。 | NativeMenu |
方法 | 由以下参数定义 | ||
---|---|---|---|
创建新的 NativeMenu 对象。 | NativeMenu | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。 | EventDispatcher | ||
在菜单底部添加一个菜单项。 | NativeMenu | ||
在指定位置插入一个菜单项。 | NativeMenu | ||
通过插入新菜单项,在菜单中添加子菜单。 | NativeMenu | ||
通过在指定位置插入新菜单项,在菜单中添加子菜单。 | NativeMenu | ||
创建菜单和所有项目的副本。 | NativeMenu | ||
报告此菜单是否包含指定的菜单项。 | NativeMenu | ||
将事件调度到事件流中。 | EventDispatcher | ||
在指定位置弹出此菜单。 | NativeMenu | ||
获取指定索引处的菜单项。 | NativeMenu | ||
获取具有指定名称的菜单项。 | NativeMenu | ||
获取指定项目的位置。 | NativeMenu | ||
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。 | EventDispatcher | ||
表示对象是否已经定义了指定的属性。 | Object | ||
表示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
表示指定的属性是否存在、是否可枚举。 | Object | ||
删除菜单中的所有项目。 | NativeMenu | ||
从 EventDispatcher 对象中删除侦听器。 | EventDispatcher | ||
删除指定的菜单项。 | NativeMenu | ||
删除并返回指定索引处的菜单项。 | NativeMenu | ||
将菜单项移到指定位置。 | NativeMenu | ||
设置循环操作动态属性的可用性。 | Object | ||
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。 | Object | ||
返回指定对象的字符串表示形式。 | Object | ||
返回指定对象的原始值。 | Object | ||
检查是否用此 EventDispatcher 对象或其任何祖代为指定事件类型注册了事件侦听器。 | EventDispatcher |
事件 | 摘要 | 由以下参数定义 | ||
---|---|---|---|---|
[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。 | EventDispatcher | |||
[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。 | EventDispatcher | |||
此 NativeMenu 对象在显示菜单前立即进行调度。 | NativeMenu | |||
在显示菜单之前的一瞬间且按下等效键时,由 NativeMenu 对象调度。 | NativeMenu | |||
在选择其菜单项之一或其后代子菜单之一中的项目时由此 NativeMenu 对象调度。 | NativeMenu |
isSupported | 属性 |
items | 属性 |
numItems | 属性 |
parent | 属性 |
parent:NativeMenu
[只读] 语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
父菜单。
根(顶级)菜单对象的 parent
为 null
。
实现
public function get parent():NativeMenu
NativeMenu | () | 构造函数 |
public function NativeMenu()
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
创建新的 NativeMenu 对象。
addItem | () | 方法 |
public function addItem(item:NativeMenuItem):NativeMenuItem
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
在菜单底部添加一个菜单项。
创建上下文菜单时,可以添加 NativeMenuItem 或 ContextMenuItem 对象。但是,建议在上下文菜单中仅使用一种类型的对象,以使菜单中的所有项都具有相同的属性。
注意:将一个项添加到菜单时,如果该项的子菜单设置为菜单本身(造成循环引用),可能导致应用程序挂起。
参数
item:NativeMenuItem — 要在菜单底部添加的 NativeMenuItem 对象。
|
NativeMenuItem |
引发
ArgumentError — 如果 item 为 null 。
| |
ArgumentError — 如果 item 为其他菜单的成员。
|
addItemAt | () | 方法 |
public function addItemAt(item:NativeMenuItem, index:int):NativeMenuItem
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
在指定位置插入一个菜单项。该位置从顶部索引。将 index
参数设置为零,在菜单顶部插入项。所有菜单类型:窗口、应用程序、系统任务栏图标、停靠图标、上下文和弹出菜单,均从顶部索引菜单位置。
参数
item:NativeMenuItem — 要插入的 NativeMenuItem 对象。
| |
index:int — 菜单中要插入该菜单项的位置(从 0 开始)。
注意:将一个项添加到菜单时,如果该项的子菜单设置为菜单本身(造成循环引用),可能导致应用程序挂起。 |
NativeMenuItem |
引发
ArgumentError — 如果 item 为 null 。
| |
ArgumentError — 如果 item 为其他菜单的成员。
| |
RangeError — 如果 index 位于菜单的 items 数组的范围以外。
|
addSubmenu | () | 方法 |
public function addSubmenu(submenu:NativeMenu, label:String):NativeMenuItem
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
通过插入新菜单项,在菜单中添加子菜单。
调用 addSubMenu()
方法等效于创建一个新菜单项、将其添加到菜单,并将 NativeMenu 对象分配给该项目的 submenu
属性。
注意:将菜单添加为其自身的一个子菜单(在循环引用中)可能导致应用程序挂起。
参数
submenu:NativeMenu — 定义要添加的子菜单的 NativeMenu 对象。
| |
label:String — 要添加的菜单项的显示标签。
|
NativeMenuItem — 为该子菜单创建的 NativeMenuItem 对象。
|
addSubmenuAt | () | 方法 |
public function addSubmenuAt(submenu:NativeMenu, index:int, label:String):NativeMenuItem
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
通过在指定位置插入新菜单项,在菜单中添加子菜单。
调用 addSubMenuAt()
方法等效于创建一个新菜单项、将其插入到菜单中需要的位置,并将 NativeMenu 对象分配给该项目的 submenu
属性。
注意:将菜单添加为其自身的一个子菜单(在循环引用中)可能导致应用程序挂起。
参数
submenu:NativeMenu — 定义要添加的子菜单的 NativeMenu 对象。
| |
index:int — 此菜单的 items 数组中要插入将添加的菜单项的位置。
| |
label:String — 要添加的菜单项的显示标签。
|
NativeMenuItem — 为该子菜单创建的 NativeMenuItem 对象。
|
clone | () | 方法 |
containsItem | () | 方法 |
public function containsItem(item:NativeMenuItem):Boolean
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
报告此菜单是否包含指定的菜单项。
参数
item:NativeMenuItem — 要查找的 NativeMenuItem 对象。
|
Boolean — 如果 item 位于此菜单中,则为 true 。
|
display | () | 方法 |
getItemAt | () | 方法 |
public function getItemAt(index:int):NativeMenuItem
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
获取指定索引处的菜单项。
参数
index:int — 要返回的项目的位置(从 0 开始)。
|
NativeMenuItem — 位于菜单中指定位置的 NativeMenuItem 对象。
|
引发
RangeError — 如果 index 位于此菜单的 items 数组的范围以外。
|
getItemByName | () | 方法 |
public function getItemByName(name:String):NativeMenuItem
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
获取具有指定名称的菜单项。
注意:默认情况下不分配菜单项的 name
属性。
参数
name:String — 要查找的字符串。
|
NativeMenuItem — 具有指定名称的 NativeMenuItem 对象,如果菜单中没有这样的项目,则为 null 。
|
getItemIndex | () | 方法 |
public function getItemIndex(item:NativeMenuItem):int
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
获取指定项目的位置。
参数
item:NativeMenuItem — 要查找的 NativeMenuItem 对象。
|
int — 此菜单中指定项目的位置(从零开始),如果项目不在此菜单中,为 -1 。
|
removeAllItems | () | 方法 |
removeItem | () | 方法 |
public function removeItem(item:NativeMenuItem):NativeMenuItem
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
删除指定的菜单项。
参数
item:NativeMenuItem — 要从此菜单删除的 NativeMenuItem 对象。
|
NativeMenuItem |
引发
RangeError — 如果 item 不在此菜单中
|
removeItemAt | () | 方法 |
public function removeItemAt(index:int):NativeMenuItem
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
删除并返回指定索引处的菜单项。
参数
index:int — 要删除的项目的位置(从 0 开始)。
|
NativeMenuItem — 已删除的 NativeMenuItem 对象。
|
引发
RangeError — 如果 index 位于此菜单的 items 数组的范围以外。
|
setItemIndex | () | 方法 |
public function setItemIndex(item:NativeMenuItem, index:int):void
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
将菜单项移到指定位置。如果菜单中还没有该项目,调用此方法时会将项目添加到菜单中。
参数
item:NativeMenuItem — 要移动的 NativeMenuItem 对象。
| |
index:int — 菜单中要将 item 移动到的位置(从 0 开始)。
|
引发
RangeError — 如果 index 位于此菜单的 items 数组的范围以外。
|
displaying | 事件 |
flash.events.Event
属性 Event.type =
flash.events.Event.DISPLAYING
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
此 NativeMenu 对象在显示菜单前立即进行调度。
侦听此事件可在显示菜单之前更新菜单。displaying
事件还由菜单中的项调度。
preparing
事件替代 displaying
事件并提供其他功能。侦听 preparing
事件或 displaying
事件,但不能同时侦听两者。
注意:在 Mac OS X 上,AIR 2.6 之前的版本,当用户按下等效键时,菜单和菜单项调度 displaying
事件。(在其他操作系统上,不为等效键交互调度此事件。)从 AIR 2.6 开始,当用户按下等效键时,不再调度 displaying
事件。而是使用 preparing
事件。
Event.DISPLAYING
常量定义 displaying
事件对象的 type
属性值。
注意:无论目标是否出现在显示列表中,此事件都不会通过“捕获阶段”,而是被直接调度给此目标。
此事件具有以下属性:
属性 | 值 |
---|---|
bubbles | false |
cancelable | false |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 将要显示的 对象。 |
preparing | 事件 |
flash.events.Event
属性 Event.type =
flash.events.Event.PREPARING
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 2.6 |
在显示菜单之前的一瞬间且按下等效键时,由 NativeMenu 对象调度。
在显示菜单之前或用户按下等效键时,侦听此事件以更新菜单。在完全计算等效键之前调度 preparing
事件。您可以在 preparing
事件处理函数中从菜单中启用、禁用或删除菜单项,这些更改将在处理等效键时生效。例如,如果您删除或禁用分配给触发等效键的菜单项,则事件顺序将有效地被取消,不调度 select
事件。preparing
事件还由菜单中的项调度。
preparing
事件替代 displaying
事件并提供其他功能。侦听 preparing
事件或 displaying
事件,但不能同时侦听两者。
Event.PREPARING
常量定义 preparing
事件对象的 type
属性值。
注意:无论目标是否出现在显示列表中,此事件都不会通过“捕获阶段”,而是被直接调度给此目标。
此事件具有以下属性:
属性 | 值 |
---|---|
bubbles | false |
cancelable | false |
currentTarget | 调度此事件的对象。 |
target | 调度此事件的对象。 |
select | 事件 |
flash.events.Event
属性 Event.type =
flash.events.Event.SELECT
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0 |
在选择其菜单项之一或其后代子菜单之一中的项目时由此 NativeMenu 对象调度。
select
事件将从菜单项冒泡 到包含它的菜单,并贯穿父菜单链到达根菜单对象。该事件对象的 target
属性将引用所选的 NativeMenuItem 对象;currentTarget
属性将引用此 NativeMenu 对象。
Event.SELECT
常量定义 select
事件对象的 type
属性的值。
此事件具有以下属性:
属性 | 值 |
---|---|
bubbles | false |
cancelable | false ;没有要取消的默认行为。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
target | 对象,已在其中选定了一个项目。 |
Tue Jun 12 2018, 11:04 AM Z