包 | flash.ui |
类 | public final class ContextMenu |
继承 | ContextMenu EventDispatcher Object |
语言版本 : | ActionScript 3.0 |
Player 版本 : | Flash Player 9 |
您可以将 ContextMenu 对象附加到特定的按钮、影片剪辑或文本字段对象,也可以附加到整个影片级别。 为此,可以使用 Button、MovieClip 或 TextField 类的 menu
属性。 有关 menu
属性的详细信息,请参阅 Button.menu、MovieClip.menu 和 TextField.menu。
若要向 ContextMenu 对象中添加新项,可以创建一个 ContextMenuItem 对象,然后将该对象添加到 ContextMenu.customItems
数组。 有关创建上下文菜单项的详细信息,请参阅 ContextMenuItem 类条目。
Flash Player 有三种类型的上下文菜单:标准菜单(当您在 Flash Player 中右键单击时出现)、编辑菜单(当您在可选择或可编辑的文本字段中右键单击时出现)和错误菜单(当 SWF 文件未能加载到 Flash Player 中时出现)。 只有标准菜单和编辑菜单才能使用 ContextMenu 类进行修改。
自定义菜单项始终出现在 Flash Player 上下文菜单的顶部,并位于所有可见内置菜单项之上;内置菜单项和自定义菜单项之间由一个分隔条加以分隔。 向上下文菜单添加的自定义菜单项不得超过 15 个。 您不能从上下文菜单中删除“设置”菜单项。 在 Flash 中,必须有“设置”菜单项,以便用户能够访问影响其计算机上的隐私和存储的设置。 您也不能删除“关于”菜单项,必须具有这个菜单项,以便用户能够了解正在使用的 Flash Player 的版本。
必须在使用 ContextMenu()
构造函数创建 ContextMenu 对象后才能调用其方法。
另请参见
属性 | 定义方 | ||
---|---|---|---|
builtInItems : ContextMenuBuiltInItems
一个对象,它包含 ContextMenuBuiltInItems 类的以下属性:forwardAndBack、loop、play、print、quality、rewind、save 和 zoom。
| ContextMenu | ||
constructor : Object
对类对象或给定对象实例的构造函数的引用。
| Object | ||
customItems : Array
ContextMenuItem 对象的数组。
| ContextMenu | ||
prototype : Object
[static]
对类或函数对象的原型对象的引用。
| Object |
方法 | 定义方 | ||
---|---|---|---|
创建 ContextMenu 对象。
| ContextMenu | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
| EventDispatcher | ||
创建指定的 ContextMenu 对象的副本。
| ContextMenu | ||
将事件调度到事件流中。
| EventDispatcher | ||
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
| EventDispatcher | ||
指示对象是否已经定义了指定的属性。
| Object | ||
隐藏指定的 ContextMenu 对象中的所有内置菜单项(“设置”除外)。
| ContextMenu | ||
指示 Object 类的实例是否在指定为参数的对象的原型链中。
| Object | ||
指示指定的属性是否存在、是否可枚举。
| Object | ||
从 EventDispatcher 对象中删除侦听器。
| EventDispatcher | ||
设置循环操作动态属性的可用性。
| Object | ||
返回指定对象的字符串表示形式。
| Object | ||
返回指定对象的原始值。
| Object | ||
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
| EventDispatcher |
事件 | 摘要 | 定义方 | ||
---|---|---|---|---|
Flash Player 获得操作系统焦点并变为活动状态时调度。 | EventDispatcher | |||
Flash Player 失去操作系统焦点并变为非活动状态时调度。 | EventDispatcher | |||
在用户首次生成上下文菜单但尚未显示上下文菜单内容时调度。 | ContextMenu |
builtInItems | 属性 |
builtInItems:ContextMenuBuiltInItems
[read-write]
语言版本 : | ActionScript 3.0 |
Player 版本 : | Flash Player 9 |
一个对象,它包含 ContextMenuBuiltInItems 类的以下属性:forwardAndBack
、loop
、play
、print
、quality
、rewind
、save
和 zoom
。 将这些属性设置为 false
将删除指定的 ContextMenu 对象中的对应菜单项。 这些属性是可枚举的属性,默认情况下设置为 true
。
public function get builtInItems():ContextMenuBuiltInItems
public function set builtInItems(value:ContextMenuBuiltInItems):void
另请参见
customItems | 属性 |
customItems:Array
[read-write]
语言版本 : | ActionScript 3.0 |
Player 版本 : | Flash Player 9 |
ContextMenuItem 对象的数组。 数组中的每个对象表示您已经定义的上下文菜单项。 使用此属性可添加、删除或修改这些自定义菜单项。
若要添加新的菜单项,请创建一个 ContextMenuItem 对象,然后将其添加到 customItems
数组(例如使用 Array.push()
)。 有关创建菜单项的详细信息,请参阅 ContextMenuItem 类条目。
public function get customItems():Array
public function set customItems(value:Array):void
另请参见
ContextMenu | () | 构造函数 |
public function ContextMenu()
语言版本 : | ActionScript 3.0 |
Player 版本 : | Flash Player 9 |
创建 ContextMenu 对象。
另请参见
clone | () | 方法 |
public function clone():ContextMenu
语言版本 : | ActionScript 3.0 |
Player 版本 : | Flash Player 9 |
创建指定的 ContextMenu 对象的副本。 该副本继承初始菜单对象的所有属性。
返回ContextMenu — 包含原始菜单对象的所有属性的 ContextMenu 对象。
|
hideBuiltInItems | () | 方法 |
public function hideBuiltInItems():void
语言版本 : | ActionScript 3.0 |
Player 版本 : | Flash Player 9 |
隐藏指定的 ContextMenu 对象中的所有内置菜单项(“设置”除外)。 如果 Flash Player 的调试器版本正在运行,则会显示“调试”菜单项,尽管对于未启用远程调试功能的 SWF 文件该菜单项会变暗。
此方法仅隐藏标准上下文菜单中显示的菜单项;它不影响编辑菜单和错误菜单中显示的菜单项。
通过将 my_cm
.builtInItems
的所有布尔成员设置为 false
可使此方法起作用。 可以有选择地显示内置菜单项,方法是将它在 my_cm
.builtInItems
中的对应成员设置为 true
。
另请参见
menuSelect | 事件 |
flash.events.ContextMenuEvent
flash.events.ContextMenuEvent.MENU_SELECT
语言版本 : | ActionScript 3.0 |
Player 版本 : | 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
赋给 redRectangle
sprite 的上下文菜单,以便仅当鼠标移动到该正方形上方时才显示自定义上下文菜单。package { import flash.ui.ContextMenu; import flash.ui.ContextMenuItem; import flash.ui.ContextMenuBuiltInItems; import flash.events.ContextMenuEvent; 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; } } }
当前页: http://livedocs.adobe.com/flash/9.0_cn/ActionScriptLangRefV3/flash/ui/ContextMenu.html