| 包 | flash.ui |
| 类 | public final class ContextMenu |
| 继承 | ContextMenu NativeMenu EventDispatcher Object |
| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0, Flash Player 9 |
移动浏览器支持:移动浏览器不支持此类。
AIR 配置文件支持:移动设备或 AIR for TV 设备不支持此功能。有关在多个配置文件之间支持 API 的详细信息,请参阅 AIR 配置文件支持。
在 Flash Player 中,用户可以通过右键单击(Windows 或 Linux)或按住 Control 并单击 (Macintosh) Flash Player 打开上下文菜单。使用 ContextMenu 类的方法和属性可以添加自定义菜单项、控制内置上下文菜单项(如“放大”和“打印”)的显示或者创建菜单的副本。在 AIR 中,没有内置菜单项,也没有标准上下文菜单。
在 Flash Professional 中,您可以将 ContextMenu 对象附加到特定的按钮、影片剪辑或文本字段对象,也可以附加到整个影片级别。使用 InteractiveObject 类的 contextMenu 属性可做到这一点。
在 Flex 或 Flash Builder 中,只有应用程序中的顶层组件才能拥有上下文菜单。例如,如果 DataGrid 控件是 TabNavigator 或 VBox 容器的子级,则 DataGrid 控件不能拥有其自己的上下文菜单。
为了向 ContextMenu 对象中添加新项,可以创建一个 ContextMenuItem 对象,然后将该对象添加到 ContextMenu.customItems 数组。有关创建上下文菜单项的详细信息,请参阅 ContextMenuItem 类条目。
Flash Player 有三种类型的上下文菜单:标准菜单(当您在 Flash Player 中右键单击时出现)、编辑菜单(当您在可选择或可编辑的文本字段中右键单击时出现)和错误菜单(当 SWF 文件未能加载到 Flash Player 中时出现)。只有标准菜单和编辑菜单才能使用 ContextMenu 类进行修改。AIR 中只显示编辑菜单。
自定义菜单项始终出现在 Flash Player 上下文菜单的顶部,并位于所有可见内置菜单项之上;内置菜单项和自定义菜单项之间由一个分隔条加以分隔。您不能从上下文菜单中删除“设置”菜单项。在 Flash 中,必须有“设置”菜单项,以便用户能够访问影响其计算机上的隐私和存储的设置。您也不能删除“关于”菜单项,必须具有这个菜单项,以便用户能够了解正在使用的 Flash Player 的版本。(AIR 中不使用内置的“设置”和“关于”菜单项。)
最多可以向 Flash Player 中的上下文菜单添加 15 个自定义项。AIR 中对上下文菜单中的项数没有明确限制。
必须在使用 ContextMenu() 构造函数创建 ContextMenu 对象后才能调用其方法。
相关 API 元素
| 属性 | 由以下参数定义 | ||
|---|---|---|---|
| builtInItems : ContextMenuBuiltInItems
ContextMenuBuiltInItems 类具有以下属性的实例:forwardAndBack、loop、play、print、quality、rewind、save 和 zoom。 | ContextMenu | ||
| clipboardItems : ContextMenuClipboardItems
ContextMenuClipboardItems 类具有以下属性的实例:cut、copy、paste、delete 和 selectAll。 | ContextMenu | ||
| clipboardMenu : Boolean
指定是否应使用剪贴板菜单。 | ContextMenu | ||
![]() | constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | |
| customItems : Array
ContextMenuItem 对象的数组。 | ContextMenu | ||
| isSupported : Boolean [静态] [只读]
如果当前平台支持 ContextMenu 类,则 isSupported 属性设置为 true,否则,设置为 false。 | ContextMenu | ||
| items : Array [覆盖]
此菜单中自定义项的数组。 | ContextMenu | ||
| link : URLRequest
链接的 URLRequest。 | ContextMenu | ||
| numItems : int [覆盖] [只读]
此菜单中的项数。 | ContextMenu | ||
![]() | parent : NativeMenu [只读]
父菜单。 | NativeMenu | |
| 方法 | 由以下参数定义 | ||
|---|---|---|---|
创建 ContextMenu 对象。 | ContextMenu | ||
![]() | addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。 | EventDispatcher | |
![]() |
在菜单底部添加一个菜单项。 | NativeMenu | |
[覆盖]
在菜单底部添加一个菜单项。 | ContextMenu | ||
![]() |
通过插入新菜单项,在菜单中添加子菜单。 | NativeMenu | |
![]() |
通过在指定位置插入新菜单项,在菜单中添加子菜单。 | NativeMenu | |
[覆盖]
创建指定 ContextMenu 对象的副本。 | ContextMenu | ||
[覆盖]
报告此菜单是否包含指定的菜单项。 | ContextMenu | ||
![]() |
将事件调度到事件流中。 | EventDispatcher | |
[覆盖]
在指定位置弹出此菜单。 | ContextMenu | ||
[覆盖]
获取指定索引处的菜单项。 | ContextMenu | ||
![]() |
获取具有指定名称的菜单项。 | NativeMenu | |
[覆盖]
获取指定项目的位置。 | ContextMenu | ||
![]() |
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。 | EventDispatcher | |
![]() |
表示对象是否已经定义了指定的属性。 | Object | |
隐藏指定的 ContextMenu 对象中的所有内置菜单项(“设置”除外)。 | ContextMenu | ||
![]() |
表示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | |
![]() |
表示指定的属性是否存在、是否可枚举。 | Object | |
[覆盖]
删除菜单中的所有项目。 | ContextMenu | ||
![]() |
从 EventDispatcher 对象中删除侦听器。 | EventDispatcher | |
![]() |
删除指定的菜单项。 | NativeMenu | |
[覆盖]
删除并返回指定索引处的菜单项。 | ContextMenu | ||
![]() |
将菜单项移到指定位置。 | NativeMenu | |
![]() |
设置循环操作动态属性的可用性。 | Object | |
![]() |
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。 | Object | |
![]() |
返回指定对象的字符串表示形式。 | Object | |
![]() |
返回指定对象的原始值。 | Object | |
![]() |
检查是否用此 EventDispatcher 对象或其任何祖代为指定事件类型注册了事件侦听器。 | EventDispatcher | |
| 事件 | 摘要 | 由以下参数定义 | ||
|---|---|---|---|---|
![]() | [广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。 | EventDispatcher | ||
![]() | [广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。 | EventDispatcher | ||
![]() | 此 NativeMenu 对象在显示菜单前立即进行调度。 | NativeMenu | ||
| 在用户首次生成上下文菜单但尚未显示上下文菜单内容时调度。 | ContextMenu | |||
![]() | 在显示菜单之前的一瞬间且按下等效键时,由 NativeMenu 对象调度。 | NativeMenu | ||
![]() | 在选择其菜单项之一或其后代子菜单之一中的项目时由此 NativeMenu 对象调度。 | NativeMenu | ||
builtInItems | 属性 |
builtInItems:ContextMenuBuiltInItems| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0, Flash Player 9 |
ContextMenuBuiltInItems 类具有以下属性的实例:forwardAndBack、loop、play、print、quality、rewind、save 和 zoom。将这些属性设置为 false 将删除指定的 ContextMenu 对象中的对应菜单项。这些属性是可枚举的属性,默认情况下设置为 true。
注意:在 AIR 中,上下文菜单没有内置项。
实现
public function get builtInItems():ContextMenuBuiltInItems public function set builtInItems(value:ContextMenuBuiltInItems):void相关 API 元素
clipboardItems | 属性 |
clipboardItems:ContextMenuClipboardItems| 语言版本: | ActionScript 3.0 |
| 运行时版本: | Flash Player 10, AIR 1.5 |
ContextMenuClipboardItems 类具有以下属性的实例:cut、copy、paste、delete 和 selectAll。若将其中一个属性设置为 false,则禁用剪贴板菜单中的相应项。
实现
public function get clipboardItems():ContextMenuClipboardItems public function set clipboardItems(value:ContextMenuClipboardItems):void相关 API 元素
示例 ( 如何使用本示例 )
ContextMenu 对象的 clipboardItems 属性的用法。创建一个 ContextMenu 并将其 clipboardMenu 属性设置为 true。添加 MENU_SELECT 事件的事件处理函数(通常是右键单击),并将菜单分配给一个显示对象。在这种情况下,将启用 copy 和 paste 菜单。
package {
import flash.ui.ContextMenu;
import flash.events.ContextMenuEvent;
import flash.display.Sprite;
public class ContextMenuClipboardItemsExample extends Sprite {
public function ContextMenuClipboardItemsExample() {
var myContextMenu:ContextMenu = new ContextMenu();
myContextMenu.clipboardMenu = true;
myContextMenu.addEventListener(ContextMenuEvent.MENU_SELECT, menuSelectHandler);
var rc:Sprite = new Sprite();
rc.graphics.beginFill(0xDDDDDD);
rc.graphics.drawRect(0,0,100,30);
addChild(rc);
rc.contextMenu = myContextMenu;
}
function menuSelectHandler(event:ContextMenuEvent):void {
event.contextMenuOwner.contextMenu.clipboardItems.copy = true;
event.contextMenuOwner.contextMenu.clipboardItems.paste = true;
}
}
}
clipboardMenu | 属性 |
customItems | 属性 |
customItems:Array| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0, Flash Player 9 |
ContextMenuItem 对象的数组。数组中的每个对象表示您已经定义的上下文菜单项。使用此属性可添加、删除或修改这些自定义菜单项。
要添加新的菜单项,请创建一个 ContextMenuItem 对象,然后将其添加到 customItems 数组(例如使用 Array.push())。有关创建菜单项的详细信息,请参阅 ContextMenuItem 类条目。
实现
public function get customItems():Array public function set customItems(value:Array):void相关 API 元素
isSupported | 属性 |
items | 属性 |
link | 属性 |
link:URLRequest| 语言版本: | ActionScript 3.0 |
| 运行时版本: | Flash Player 10, AIR 1.5 |
链接的 URLRequest。如果此属性为 null,则显示标准上下文菜单。如果此属性不为 null,则显示链接上下文菜单,并对指定的 URL 执行操作。
如果指定了 link,则将忽略 clipboardMenu 属性。
默认值为 null。
实现
public function get link():URLRequest public function set link(value:URLRequest):void numItems | 属性 |
ContextMenu | () | 构造函数 |
public function ContextMenu()| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0, Flash Player 9 |
创建 ContextMenu 对象。
相关 API 元素
addItemAt | () | 方法 |
override public function addItemAt(item:NativeMenuItem, index:int):NativeMenuItem| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 |
在菜单底部添加一个菜单项。
创建上下文菜单时,可以添加 NativeMenuItem 或 ContextMenuItem 对象。但是,建议在上下文菜单中仅使用一种类型的对象,以使菜单中的所有项都具有相同的属性。
参数
item:NativeMenuItem — 要在菜单底部添加的项。
| |
index:int |
NativeMenuItem |
引发
ArgumentError — 如果 item 为 null。
| |
ArgumentError — 如果 item 为其他菜单的成员。
|
clone | () | 方法 |
override public function clone():NativeMenu| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0, Flash Player 9 |
创建指定 ContextMenu 对象的副本。此副本继承了原始菜单对象的所有属性。
返回NativeMenu — 包含原始菜单对象所有属性的 ContextMenu 对象。
|
containsItem | () | 方法 |
override public function containsItem(item:NativeMenuItem):Boolean| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 |
报告此菜单是否包含指定的菜单项。
参数
item:NativeMenuItem — 要查找的项目。
|
Boolean — 如果 item 位于此菜单中,则为 true。
|
display | () | 方法 |
getItemAt | () | 方法 |
override public function getItemAt(index:int):NativeMenuItem| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 |
获取指定索引处的菜单项。
参数
index:int — 要返回的项目的位置(从 0 开始)。
|
NativeMenuItem — 菜单中指定位置处的项目。
|
引发
RangeError — 如果 index 位于此菜单的 items 数组的范围以外。
|
getItemIndex | () | 方法 |
override public function getItemIndex(item:NativeMenuItem):int| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0 |
获取指定项目的位置。
参数
item:NativeMenuItem — 要查找的 NativeMenuItem 对象。
|
int — 此菜单中指定项目的位置(从零开始),如果项目不在此菜单中,为 -1。
|
hideBuiltInItems | () | 方法 |
public function hideBuiltInItems():void| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0, Flash Player 9 |
隐藏指定的 ContextMenu 对象中的所有内置菜单项(“设置”除外)。如果 Flash Player 的调试器版本正在运行,则会显示“调试”菜单项,尽管对于未启用远程调试功能的 SWF 文件该菜单项会变暗。
此方法仅隐藏标准上下文菜单中显示的菜单项;它不影响编辑菜单和错误菜单中显示的菜单项。
通过将 my_cm.builtInItems 的所有布尔成员设置为 false 可使此方法起作用。可以有选择地显示内置菜单项,方法是将它在 my_cm.builtInItems 中的对应成员设置为 true。
注意:在 AIR 中,上下文菜单没有内置项。调用此方法将无效。
相关 API 元素
removeAllItems | () | 方法 |
removeItemAt | () | 方法 |
override public function removeItemAt(index:int):NativeMenuItem| 运行时版本: | AIR 1.0 |
删除并返回指定索引处的菜单项。
参数
index:int — 要删除的项目的位置(从 0 开始)。
|
NativeMenuItem — 已删除的 NativeMenuItem 对象。
|
menuSelect | 事件 |
flash.events.ContextMenuEvent属性 ContextMenuEvent.type =
flash.events.ContextMenuEvent.MENU_SELECT| 语言版本: | ActionScript 3.0 |
| 运行时版本: | AIR 1.0, Flash Player 9 |
在用户首次生成上下文菜单但尚未显示上下文菜单内容时调度。这将允许您的程序在显示菜单之前修改上下文菜单项集。用户通过右键单击指针设备来生成上下文菜单。
定义menuSelect 事件对象的 type 属性值。
此事件具有以下属性:
| 属性 | 值 |
|---|---|
bubbles | false |
cancelable | false;没有要取消的默认行为。 |
contextMenuOwner | 菜单附加到的显示列表对象。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
mouseTarget | 用户右键单击以显示上下文菜单的显示列表对象。 |
target | 将要显示的 ContextMenu 对象。target 不一定是显示列表中注册此事件侦听器的对象。请使用 currentTarget 属性来访问显示列表中当前正在处理此事件的对象。 |
ContextMenuExample 类从舞台中删除默认上下文菜单项,并添加一个新的菜单项,如果单击该菜单项,将可更改舞台上正方形的颜色。这是由以下步骤完成的:
- 声明
myContextMenu属性,然后将其赋给新的 ContextMenu 对象,并声明 Sprite 类型的redRectangle属性。 - 调用
removeDefaultItems()方法,该方法将删除所有内置的上下文菜单项(“打印”除外)。 - 调用
addCustomMenuItems()方法,该方法使用数组的push()方法将称为Red to Black菜单选择的菜单项放入defaultItems数组。将menuItemSelect事件侦听器添加到 ContextMenuItem 对象中,关联的方法名为menuItemSelectHandler()。当访问上下文菜单并选择Red to Black时,此方法使用trace()输出一些语句。同时,红色正方形被删除并替换为一个黑色正方形。 - 添加类型
menuSelect的事件侦听器以及关联的方法menuSelectHandler,该方法在每次打开上下文菜单中的项时只使用trace()输出三个语句。 - 然后,
addChildren()将绘制一个红色正方形并将其添加到显示列表,该红色正方形将立即显示在列表中。 - 最后,
myContextMenu赋给redRectanglesprite 的上下文菜单,以便仅当鼠标移动到该正方形上方时才显示自定义上下文菜单。
package {
import flash.ui.ContextMenu;
import flash.ui.ContextMenuItem;
import flash.ui.ContextMenuBuiltInItems;
import flash.events.ContextMenuEvent;
import flash.display.Sprite;
import flash.display.Shape;
import flash.text.TextField;
public class ContextMenuExample extends Sprite {
private var myContextMenu:ContextMenu;
private var menuLabel:String = "Reverse Colors";
private var textLabel:String = "Right Click";
private var redRectangle:Sprite;
private var label:TextField;
private var size:uint = 100;
private var black:uint = 0x000000;
private var red:uint = 0xFF0000;
public function ContextMenuExample() {
myContextMenu = new ContextMenu();
removeDefaultItems();
addCustomMenuItems();
myContextMenu.addEventListener(ContextMenuEvent.MENU_SELECT, menuSelectHandler);
addChildren();
redRectangle.contextMenu = myContextMenu;
}
private function addChildren():void {
redRectangle = new Sprite();
redRectangle.graphics.beginFill(red);
redRectangle.graphics.drawRect(0, 0, size, size);
addChild(redRectangle);
redRectangle.x = size;
redRectangle.y = size;
label = createLabel();
redRectangle.addChild(label);
}
private function removeDefaultItems():void {
myContextMenu.hideBuiltInItems();
var defaultItems:ContextMenuBuiltInItems = myContextMenu.builtInItems;
defaultItems.print = true;
}
private function addCustomMenuItems():void {
var item:ContextMenuItem = new ContextMenuItem(menuLabel);
myContextMenu.customItems.push(item);
item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, menuItemSelectHandler);
}
private function menuSelectHandler(event:ContextMenuEvent):void {
trace("menuSelectHandler: " + event);
}
private function menuItemSelectHandler(event:ContextMenuEvent):void {
trace("menuItemSelectHandler: " + event);
var textColor:uint = (label.textColor == black) ? red : black;
var bgColor:uint = (label.textColor == black) ? black : red;
redRectangle.graphics.clear();
redRectangle.graphics.beginFill(bgColor);
redRectangle.graphics.drawRect(0, 0, size, size);
label.textColor = textColor;
}
private function createLabel():TextField {
var txtField:TextField = new TextField();
txtField.text = textLabel;
return txtField;
}
}
}
Tue Jun 12 2018, 11:04 AM Z
隐藏继承的公共属性
显示继承的公共属性