flash.ui
public final class ContextMenu
继承ContextMenu Inheritance EventDispatcher Inheritance Object

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

ContextMenu 类提供对 Flash Player 上下文菜单中的项的控制。 用户通过在 Flash Player 中右击 (Windows) 或按住 Control 单击 (Macintosh) 可打开上下文菜单。 您可以使用 ContextMenu 类的方法和属性添加自定义菜单项,控制内置上下文菜单项的显示(例如“放大”和“打印”),或者创建菜单的副本。

您可以将 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 对象后才能调用其方法。

查看示例

另请参见

ContextMenuItem class
flash.display.InteractiveObject.contextMenu



公共 属性
 属性定义方
  builtInItems : ContextMenuBuiltInItems
一个对象,它包含 ContextMenuBuiltInItems 类的以下属性:forwardAndBack、loop、play、print、quality、rewind、save 和 zoom。
ContextMenu
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  customItems : Array
ContextMenuItem 对象的数组。
ContextMenu
 Inheritedprototype : Object
[static] 对类或函数对象的原型对象的引用。
Object
公共 方法
 方法定义方
  
创建 ContextMenu 对象。
ContextMenu
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
  
创建指定的 ContextMenu 对象的副本。
ContextMenu
 Inherited
将事件调度到事件流中。
EventDispatcher
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
  
隐藏指定的 ContextMenu 对象中的所有内置菜单项(“设置”除外)。
ContextMenu
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
事件
 事件摘要定义方
 Inherited Flash Player 获得操作系统焦点并变为活动状态时调度。EventDispatcher
 Inherited Flash Player 失去操作系统焦点并变为非活动状态时调度。EventDispatcher
   在用户首次生成上下文菜单但尚未显示上下文菜单内容时调度。ContextMenu
属性详细信息
builtInItems属性
builtInItems:ContextMenuBuiltInItems  [read-write]

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

一个对象,它包含 ContextMenuBuiltInItems 类的以下属性:forwardAndBackloopplayprintqualityrewindsavezoom。 将这些属性设置为 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
ContextMenuEvent.type property = flash.events.ContextMenuEvent.MENU_SELECT

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

在用户首次生成上下文菜单但尚未显示上下文菜单内容时调度。 这将允许您的程序在显示菜单之前修改上下文菜单项集。 用户通过右键单击指针设备来生成上下文菜单。

定义 menuSelect 事件对象的 type 属性值。

此事件具有以下属性:

属性
bubblesfalse
cancelablefalse;没有要取消的默认行为。
contextMenuOwner菜单附加到的显示列表对象。
currentTarget当前正在使用某个事件侦听器处理 Event 对象的对象。
mouseTarget用户右键单击以显示上下文菜单的显示列表对象。
target将要显示的 ContextMenu 对象。 target 不一定是显示列表中注册此事件侦听器的对象。 请使用 currentTarget 属性来访问显示列表中当前正在处理此事件的对象。
示例 如何使用示例

下例使用 ContextMenuExample 类从舞台中删除默认上下文菜单项,并添加一个新的菜单项,如果单击该菜单项,将可更改舞台上正方形的颜色。 这是由以下步骤完成的:
  1. 声明 myContextMenu 属性,然后将其赋给新的 ContextMenu 对象,并声明 Sprite 类型的 redRectangle 属性。
  2. 调用 removeDefaultItems() 方法,该方法将删除所有内置的上下文菜单项(“打印”除外)。
  3. 调用 addCustomMenuItems() 方法,该方法使用数组的 push() 方法将称为 Red to Black 菜单选择的菜单项放入 defaultItems 数组。 将 menuItemSelect 事件侦听器添加到 ContextMenuItem 对象中,关联的方法名为 menuItemSelectHandler()。 当访问上下文菜单并选择 Red to Black 时,此方法使用 trace() 输出一些语句。 同时,红色正方形被删除并替换为一个黑色正方形。
  4. 添加类型 menuSelect 的事件侦听器以及关联的方法 menuSelectHandler,该方法在每次打开上下文菜单中的项时只使用 trace() 输出三个语句。
  5. 然后,addChildren() 将绘制一个红色正方形并将其添加到显示列表,该红色正方形将立即显示在列表中。
  6. 最后,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