Пакет | flash.ui |
Класс | public final class ContextMenu |
Наследование | ContextMenu NativeMenu EventDispatcher Object |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Поддержка в мобильных браузерах: этот класс не поддерживается в мобильных браузерах.
Поддержка в профилях AIR: эта функция не поддерживается на мобильных устройствах или в средах AIR для телевизионных устройств. Дополнительные сведения о поддержке API-интерфейса в разных профилях см. в разделе «Поддержка в профилях AIR».
В Flash Player пользователи открывают контекстное меню нажатием правой кнопки мыши (Windows или Linux) или нажатием кнопки мыши с удерживанием клавиши Control (Macintosh) в области Flash Player. С помощью методов и свойств класса ContextMenu можно добавлять пользовательские пункты меню, управлять отображением встроенных пунктов контекстного меню (например, «Увеличить» и «Печать») или создавать копии меню. В AIR отсутствуют встроенные пункты и стандартные контекстные меню.
Во Flash Professional объект ContextMenu можно присоединить на уровне объекта к определенной кнопке, фрагменту ролика или текстовому полю, либо на уровне всего файла к ролику. Для этого используется свойство contextMenu
класса InteractiveObject.
При использовании Flex или Flash Builder только компоненты высшего уровня в приложении могут иметь контекстные меню. Например, если элемент управления DataGrid является дочерним элементом контейнера TabNavigator или VBox, то он не может иметь собственного контекстного меню.
Чтобы добавить новые элементы в объект 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 [статические] [только для чтения]
Свойству isSupported задается значение true, если текущая платформа поддерживает класс ContextMenu, в противном случае задается значение 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
Пример ( Использование этого примера )
clipboardItems
объекта ContextMenu
. Создайте свойство 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 | свойство |
clipboardMenu:Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10, AIR 1.5 |
Определяет, должно ли использоваться меню буфера обмена. При значении true
свойство clipboardItems
будет определять, какие пункты меню буфера обмена будут включены, а какие — нет.
Если link
имеет значение, отличное от null, свойство clipBoardMenu
игнорируется.
Реализация
public function get clipboardMenu():Boolean
public function set clipboardMenu(value:Boolean):void
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 | свойство |
isSupported:Boolean
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Свойству isSupported
задается значение true
, если текущая платформа поддерживает класс ContextMenu, в противном случае задается значение false
.
Реализация
public static function get isSupported():Boolean
items | свойство |
items:Array
[переопределить] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Массив пользовательских пунктов данного меню.
Использование этого свойства равнозначно использованию свойства customItems
. Массив сортируется в порядке отображения.
Реализация
override public function get items():Array
override public function set items(value:Array):void
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 — true , если item есть в этом меню.
|
display | () | метод |
override public function display(stage:Stage, stageX:Number, stageY:Number):void
Версии среды выполнения: | AIR 1.0 |
Добавляет раскрывающееся меню в заданном положении.
Примечание. В Flash Player этот метод не поддерживается.
Параметры
stage:Stage — Объект Stage, на котором будет отображаться данное меню.
| |
stageX:Number — Число пикселей по горизонтали относительно начала рабочей области, на котором будет отображаться данное меню.
| |
stageY:Number — Число пикселей по вертикали относительно начала рабочей области, на котором будет отображаться данное меню.
|
getItemAt | () | метод |
override public function getItemAt(index:int):NativeMenuItem
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0 |
Определяет элемент меню, расположенный по заданному индексу.
Параметры
index:int — Положение (от нуля) возвращаемого элемента.
|
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 | () | метод |
override public function removeAllItems():void
Версии среды выполнения: | AIR 1.0 |
Удаляет все пункты меню.
removeItemAt | () | метод |
override public function removeItemAt(index:int):NativeMenuItem
Версии среды выполнения: | AIR 1.0 |
Удаляет и возвращает элемент меню в заданный индекс.
Параметры
index:int — Положение (от нуля) удаляемого элемента.
|
NativeMenuItem — Удаленный объект NativeMenuItem.
|
menuSelect | Событие |
flash.events.ContextMenuEvent
свойство ContextMenuEvent.type =
flash.events.ContextMenuEvent.MENU_SELECT
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Отправляется после создания пользователем контекстного меню, но перед отображением содержимого этого меню. Это позволяет программе модифицировать набор элементов контекстного меню перед его отображением. Пользователь создает контекстное меню щелчком правой кнопки указывающего устройства.
Определяет значение свойстваtype
объекта события menuSelect
.
Это событие имеет следующие свойства:
Свойство | Значение |
---|---|
bubbles | false |
cancelable | false ; поведение по умолчанию, подлежащее отмене, не определено. |
contextMenuOwner | Объект списка отображения, к которому присоединено меню. |
currentTarget | Объект, активно обрабатывающий объект Event с помощью прослушивателя событий. |
mouseTarget | Объект списка отображения, который пользователь щелкает правой кнопкой мыши для отображения контекстного меню. |
target | Объект ContextMenu, который сейчас будет отображаться. Свойство target не всегда является объектом из списка отображения, для которого зарегистрирован прослушиватель событий. Используйте свойство currentTarget для обращения к объекту в списке отображения, обрабатывающему событие в данный момент. |
ContextMenuExample
для удаления элементов контекстного меню по умолчанию из рабочей области и добавления нового элемента меню, при щелчке изменяющего цвет квадрата в рабочей области. Это можно сделать, выполнив следующие действия:
- Объявляются свойства
myContextMenu
(которое затем назначается новому объекту ContextMenu) иredRectangle
(типа Sprite). - Вызывается метод
removeDefaultItems()
, который удаляет все встроенные элементы контекстного меню, кроме «Печать». - Вызывается метод
addCustomMenuItems()
, который помещает элемент менюRed to Black
в массивdefaultItems
с помощью методаpush()
объекта Array. Для объекта ContextMenuItem добавляется прослушиватель событийmenuItemSelect
и вызывается соответствующий методmenuItemSelectHandler()
. Этот метод печатает строки с помощью методаtrace()
при вызове контекстного меню и выборе элементаRed to Black
. Кроме того, красный квадрат удаляется и заменяется черным. - Добавляются прослушиватель событий
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 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:34 AM Z