包 | flash.events |
类 | public class ContextMenuEvent |
继承 | ContextMenuEvent Event Object |
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9 |
-
ContextMenuEvent.MENU_ITEM_SELECT
-
ContextMenuEvent.MENU_SELECT
相关 API 元素
公共属性
属性 | 由以下参数定义 | ||
---|---|---|---|
bubbles : Boolean [只读]
表示事件是否为冒泡事件。 | Event | ||
cancelable : Boolean [只读]
表示是否可以阻止与事件相关联的行为。 | Event | ||
constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | ||
contextMenuOwner : InteractiveObject
菜单附加到的显示列表对象。 | ContextMenuEvent | ||
currentTarget : Object [只读]
当前正在使用某个事件侦听器处理 Event 对象的对象。 | Event | ||
eventPhase : uint [只读]
事件流中的当前阶段。 | Event | ||
isMouseTargetInaccessible : Boolean
表示 mouseTarget 属性是否因某些安全原因设置为 null。 | ContextMenuEvent | ||
mouseTarget : InteractiveObject
用户右键单击以显示上下文菜单的显示列表对象。 | ContextMenuEvent | ||
target : Object [只读]
事件目标。 | Event | ||
type : String [只读]
事件的类型。 | Event |
公共方法
方法 | 由以下参数定义 | ||
---|---|---|---|
ContextMenuEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, mouseTarget:InteractiveObject = null, contextMenuOwner:InteractiveObject = null)
创建一个 Event 对象,其中包含有关菜单事件的特定信息。 | ContextMenuEvent | ||
[覆盖]
创建 ContextMenuEvent 对象的副本,并设置每个属性的值以匹配原始属性值。 | ContextMenuEvent | ||
用于在自定义 ActionScript 3.0 Event 类中实现 toString() 方法的实用程序函数。 | Event | ||
表示对象是否已经定义了指定的属性。 | Object | ||
检查是否已对事件调用 preventDefault() 方法。 | Event | ||
表示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
如果可以取消事件的默认行为,则取消该行为。 | Event | ||
表示指定的属性是否存在、是否可枚举。 | Object | ||
设置循环操作动态属性的可用性。 | Object | ||
防止对事件流中当前节点中和所有后续节点中的事件侦听器进行处理。 | Event | ||
防止对事件流中当前节点的后续节点中的所有事件侦听器进行处理。 | Event | ||
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。 | Object | ||
[覆盖]
返回一个字符串,其中包含 ContextMenuEvent 对象的所有属性。 | ContextMenuEvent | ||
返回指定对象的原始值。 | Object |
公共常量
常量 | 由以下参数定义 | ||
---|---|---|---|
MENU_ITEM_SELECT : String = "menuItemSelect" [静态]
定义 menuItemSelect 事件对象的 type 属性值。 | ContextMenuEvent | ||
MENU_SELECT : String = "menuSelect" [静态]
定义 menuSelect 事件对象的 type 属性值。 | ContextMenuEvent |
属性详细信息
contextMenuOwner | 属性 |
contextMenuOwner:InteractiveObject
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9 |
菜单附加到的显示列表对象。此对象可以是鼠标目标 (mouseTarget
) 或显示列表中它的祖代之一。
实现
public function get contextMenuOwner():InteractiveObject
public function set contextMenuOwner(value:InteractiveObject):void
isMouseTargetInaccessible | 属性 |
isMouseTargetInaccessible:Boolean
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 10 |
表示 mouseTarget
属性是否因某些安全原因设置为 null
。如果 menuTarget
的标称值是对其他安全沙箱中 DisplayObject
的引用,则 menuTarget
将设置为 null
,除非同时具有跨此沙箱边界的双向权限。权限通过以下方式建立:从 SWF 文件调用 Security.allowDomain()
;或者通过从图像文件的服务器提供策略文件,并在加载图像时设置 LoaderContext.checkPolicyFile
标志。
实现
public function get isMouseTargetInaccessible():Boolean
public function set isMouseTargetInaccessible(value:Boolean):void
相关 API 元素
mouseTarget | 属性 |
mouseTarget:InteractiveObject
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9 |
用户右键单击以显示上下文菜单的显示列表对象。此对象可以是菜单附加到的显示列表对象 (contextMenuOwner
) 或显示列表中它的后代之一。
在以下两种情况下,此属性的值可以为 null
:不存在任何鼠标目标(例如,当您在后台将鼠标置于某个对象上方时);存在鼠标目标,但它位于您无法访问的安全沙箱中。使用 isMouseTargetInaccessible()
属性可确定上述哪一个原因适用。
实现
public function get mouseTarget():InteractiveObject
public function set mouseTarget(value:InteractiveObject):void
相关 API 元素
构造函数详细信息
ContextMenuEvent | () | 构造函数 |
public function ContextMenuEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, mouseTarget:InteractiveObject = null, contextMenuOwner:InteractiveObject = null)
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9 |
创建一个 Event 对象,其中包含有关菜单事件的特定信息。将 Event 对象作为参数传递给事件侦听器。
参数type:String — 事件的类型。可能的值包括:
| |
bubbles:Boolean (default = false ) — 确定 Event 对象是否参与事件流的冒泡阶段。事件侦听器可以通过继承的 bubbles 属性访问此信息。
| |
cancelable:Boolean (default = false ) — 确定是否可以取消 Event 对象。事件侦听器可以通过继承的 cancelable 属性访问此信息。
| |
mouseTarget:InteractiveObject (default = null ) — 用户右键单击以显示上下文菜单的显示列表对象。此对象可以是 contextMenuOwner 或显示列表中它的后代之一。
| |
contextMenuOwner:InteractiveObject (default = null ) — 菜单附加到的显示列表对象。此对象可以是 mouseTarget 或显示列表中它的祖代之一。
|
相关 API 元素
方法详细信息
clone | () | 方法 |
toString | () | 方法 |
常量详细信息
MENU_ITEM_SELECT | 常量 |
public static const MENU_ITEM_SELECT:String = "menuItemSelect"
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9 |
定义 menuItemSelect
事件对象的 type
属性值。
此事件具有以下属性:
属性 | 值 |
---|---|
bubbles | false |
cancelable | false ;没有要取消的默认行为。 |
contextMenuOwner | 菜单附加到的显示列表对象。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
mouseTarget | 用户右键单击以显示上下文菜单的显示列表对象。 |
target | 已选定的 ContextMenuItem 对象。target 不一定是显示列表中注册此事件侦听器的对象。请使用 currentTarget 属性来访问显示列表中当前正在处理此事件的对象。 |
相关 API 元素
MENU_SELECT | 常量 |
public static const MENU_SELECT:String = "menuSelect"
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 1.0, Flash Player 9 |
定义 menuSelect
事件对象的 type
属性值。
此事件具有以下属性:
属性 | 值 |
---|---|
bubbles | false |
cancelable | false ;没有要取消的默认行为。 |
contextMenuOwner | 菜单附加到的显示列表对象。 |
currentTarget | 当前正在使用某个事件侦听器处理 Event 对象的对象。 |
mouseTarget | 用户右键单击以显示上下文菜单的显示列表对象。 |
target | 将要显示的 ContextMenu 对象。target 不一定是显示列表中注册此事件侦听器的对象。请使用 currentTarget 属性来访问显示列表中当前正在处理此事件的对象。 |
相关 API 元素
示例 如何使用本示例
ContextMenuEventExample.as
以下示例使用
ContextMenuEventExample
类从舞台中删除默认的上下文菜单项,并添加能够更改舞台上正方形颜色的新菜单项。该示例执行下列任务:
- 声明
myContextMenu
属性,然后将其分配给新的 ContextMenu 对象并声明redRectangle
属性(属于 Sprite 类型)。 - 调用
removeDefaultItems()
方法。此方法删除除“打印”之外的所有内置上下文菜单项。 - 调用
addCustomMenuItems()
方法。此方法将Reverse Colors
菜单项放入defaultItems
数组中(使用 Array 的push()
方法)。将menuItemSelect
事件侦听器添加到 ContextMenuItem 对象中,关联的方法名为menuItemSelectHandler()
。当用户从上下文菜单中选择“反转颜色”时,此方法将输出一些trace()
语句。此外,红色正方形将变为黑色,黑色文本将变为红色。 - 回到构造函数中,添加一个
menuSelect
事件侦听器以及关联的方法menuSelectHandler()
,每次选择上下文菜单中的一项时,只输出三条trace()
语句。 - 构造函数调用
addChildren()
,绘制一个红色正方形并将其添加到显示列表中(将立即显示该正方形)。 - 最后,将
myContextMenu
分配给redRectangle
属性的上下文菜单,以便仅当鼠标指针位于正方形上方时才显示自定义上下文菜单。
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 ContextMenuEventExample 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 ContextMenuEventExample() { 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