Пакетflash.ui
Классpublic final class ContextMenu
НаследованиеContextMenu Inheritance EventDispatcher Inheritance Object

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Класс ContextMenu обеспечивает управление элементами контекстного меню проигрывателя Flash Player. Пользователи открывают контекстное меню щелчком правой кнопки мыши (Windows) или щелчком мыши при нажатой клавише Control (Macintosh) в окне проигрывателя Flash Player. С помощью методов и свойств класса ContextMenu можно добавлять пользовательские элементы меню, управлять отображением встроенных элементов контекстного меню (например, "Увеличить" и "Печать") или создавать копии меню.

Объект ContextMenu можно присоединить на уровне объекта к определенной кнопку, фрагменту ролика или текстовому полю, либо на уровне всего файла к ролику. Это можно сделать с помощью свойства menu класса Button, MovieClip или TextField. Дополнительные сведения о свойстве 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
flash.display.InteractiveObject.contextMenu


Общедоступные свойства
 СвойствоОпределено
  builtInItems : ContextMenuBuiltInItems
Объект, имеющий следующие свойства класса ContextMenuBuiltInItems: forwardAndBack, loop, play, print, quality, rewind, save и zoom.
ContextMenu
  clipboardItems : ContextMenuClipboardItems
Объект, имеющий следующие свойства класса ContextMenuClipboardItems: cut, copy, paste, delete, selectAll.
ContextMenu
  clipboardMenu : Boolean
Определяет, должно ли использоваться меню буфера обмена.
ContextMenu
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
  customItems : Array
Массив объектов ContextMenuItem.
ContextMenu
  link : URLRequest
Объект URLRequest ссылки.
ContextMenu
 Inheritedprototype : Object
[статические] Ссылка на модель объекта класса или функции.
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  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, 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

См. также

clipboardItemsсвойство 
clipboardItems:ContextMenuClipboardItems  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Объект, имеющий следующие свойства класса ContextMenuClipboardItems: cut, copy, paste, delete, selectAll. Если задать этим свойствам значение false, отключаются соответствующие элементы в меню буфера обмена. Это перечисляемые свойства.


Реализация
    public function get clipboardItems():ContextMenuClipboardItems
    public function set clipboardItems(value:ContextMenuClipboardItems):void

См. также


Пример
В следующем примере демонстрируется использование свойства 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

Определяет, должно ли использоваться меню буфера обмена. При значении true свойство clipboardItems будет определять, какие элементы меню буфера обмена будут включены, а какие — нет.

Если link имеет ненулевое значение, это свойство игнорируется.


Реализация
    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

См. также

linkсвойство 
link:URLRequest  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Объект URLRequest ссылки. Если это свойство имеет значение null, отображается обычное контекстное меню. Если это свойство имеет ненулевое значение, отображается контекстное меню ссылки для указанного URL-адреса.

Если задано свойство link, свойство clipboardMenu игнорируется.

Значение по умолчанию — null.


Реализация
    public function get link():URLRequest
    public function set link(value:URLRequest):void
Сведения о конструкторе
ContextMenu()Конструктор
public function ContextMenu()

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Создает объект ContextMenu.

См. также

Сведения о методе
clone()метод
public function clone():ContextMenu

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Создает копию заданного объекта ContextMenu. Копия наследует все свойства исходного объекта меню.

Возвращает
ContextMenu — Объект ContextMenu со всеми свойствами исходного объекта меню.
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.

См. также

Сведения о событии
menuSelect Событие
Тип объекта события: flash.events.ContextMenuEvent
свойство ContextMenuEvent.type = flash.events.ContextMenuEvent.MENU_SELECT

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Отправляется после того как пользователь создает контекстное меню, но перед отображением содержимого этого меню. Оно позволяет программе модифицировать набор элементов контекстного меню перед его отображением. Пользователь генерирует контекстное меню щелчком правой кнопки указывающего устройства.

Определяет значение свойства type объекта события menuSelect.

Данное событие имеет следующие свойства.

СвойствоЗначение
bubblesfalse
cancelablefalse; нет поведения по умолчанию для отмены.
contextMenuOwnerОбъект списка отображения, к которому присоединено меню.
currentTargetОбъект, активно обрабатывающий объект Event с помощью прослушивателя событий.
mouseTargetОбъект списка отображения, который пользователь щелкает правой кнопкой мыши для отображения контекстного меню.
targetОбъект ContextMenu, который сейчас будет отображаться. Цель не всегда является объектом из списка отображения, для которого зарегистрирован прослушиватель событий. Используйте свойство currentTarget, чтобы обратиться к объекту в списке отображения, обрабатывающему событие в данный момент.
Примеры Как пользоваться примерами
ContextMenuExample.as

В следующем примере используется класс ContextMenuExample для удаления элементов контекстного меню по умолчанию из рабочей области и добавления нового элемента меню, при щелчке изменяющего цвет квадрата в рабочей области. Это можно сделать, выполнив следующие действия:
  1. Объявляется свойство myContextMenu, которое затем назначается новому объекту ContextMenu, и свойство redRectangle (типа Sprite).
  2. Вызывается метод removeDefaultItems(), который удаляет все встроенные элементы контекстного меню, кроме "Печать".
  3. Вызывается метод addCustomMenuItems(), который помещает элемент меню Red to Black (Из красного в черный) в массив defaultItems с помощью метода push() объекта Array. Добавляется прослушиватель событий menuItemSelect для объекта ContextMenuItem и вызывается соответствующий метод menuItemSelectHandler(). Этот метод печатает строки с помощью метода trace() при вызове контекстного меню и выборе элемента Red to Black. Также красный квадрат удаляется и заменяется черным.
  4. Добавляются прослушиватель событий menuSelect и связанный с ним метод menuSelectHandler, который просто печатает три предложения с помощью метода trace() при каждом выборе элемента контекстного меню.
  5. Затем метод addChildren() рисует красный квадрат и добавляет его в список отображения, после чего он сразу появляется на экране.
  6. В завершение, 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;
        }
    }
}