Справочник по ActionScript® 3.0 для платформы Adobe® Flash®
Домашняя страница  |  Скрыть список пакетов и классов |  Пакеты  |  Классы  |  Что нового  |  Указатель  |  Приложения  |  Почему по-английски?
Фильтры: Получение данных с сервера...
Получение данных с сервера...
flash.ui 

ContextMenu  - AS3

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

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

Класс ContextMenu обеспечивает управление пунктами, отображаемыми в контекстных меню.

Поддержка в мобильных браузерах: этот класс не поддерживается в мобильных браузерах.

Поддержка в профилях 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
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
  customItems : Array
Массив объектов ContextMenuItem.
ContextMenu
  isSupported : Boolean
[статические] [только для чтения] Свойству isSupported задается значение true, если текущая платформа поддерживает класс ContextMenu, в противном случае задается значение false.
ContextMenu
      items : Array
[переопределить] Массив пользовательских пунктов данного меню.
ContextMenu
  link : URLRequest
Объект URLRequest ссылки.
ContextMenu
      numItems : int
[переопределить] [только для чтения] Количество пунктов в данном меню.
ContextMenu
 Inherited    parent : NativeMenu
[только для чтения] Родительское меню.
NativeMenu
Общедоступные методы
 МетодОпределено
  
Создает объект ContextMenu.
ContextMenu
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Регистрирует объект прослушивателя события на объекте EventDispatcher для получения прослушивателем уведомления о событии.
EventDispatcher
 Inherited
Добавляет элемент в конец меню.
NativeMenu
  
[переопределить] Добавляет элемент в конец меню.
ContextMenu
 Inherited
    addSubmenu(submenu:NativeMenu, label:String):NativeMenuItem
Добавляет подменю в меню путем вставки нового элемента меню.
NativeMenu
 Inherited
    addSubmenuAt(submenu:NativeMenu, index:int, label:String):NativeMenuItem
Добавляет подменю в меню, вставляя новый элемент меню в заданное положение.
NativeMenu
  
[переопределить] Создает копию указанного объекта ContextMenu.
ContextMenu
  
[переопределить] Сообщает, содержит ли меню указанный элемент.
ContextMenu
 Inherited
Посылает событие в поток событий.
EventDispatcher
  
    display(stage:Stage, stageX:Number, stageY:Number):void
[переопределить] Добавляет раскрывающееся меню в заданном положении.
ContextMenu
  
[переопределить] Определяет элемент меню, расположенный по заданному индексу.
ContextMenu
 Inherited
Определяет элемент меню с заданным именем.
NativeMenu
  
[переопределить] Определяет положение заданного элемента.
ContextMenu
 Inherited
Проверяет, имеет ли объект EventDispatcher прослушиватели, зарегистрированные для определенного типа события.
EventDispatcher
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
  
Скрывает все встроенные элементы меню (кроме пункта меню «Параметры») в заданном объекте ContextMenu.
ContextMenu
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
  
[переопределить] Удаляет все пункты меню.
ContextMenu
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Удаляет прослушиватель из объекта EventDispatcher.
EventDispatcher
 Inherited
Удаляет заданный элемент меню.
NativeMenu
  
[переопределить] Удаляет и возвращает элемент меню в заданный индекс.
ContextMenu
 Inherited
    setItemIndex(item:NativeMenuItem, index:int):void
Перемещает элемент меню в заданное положение.
NativeMenu
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
 Inherited
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали.
Object
 Inherited
Возвращает строковое представление заданного объекта.
Object
 Inherited
Возвращает элементарное значение заданного объекта.
Object
 Inherited
Проверяет, зарегистрирован ли прослушиватель события для указанного типа события с данным объектом EventDispatcher или любым его предшественником.
EventDispatcher
События
 Событие Сводка Определено
 Inherited[многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR перемещается в фокус операционной системы и становится активным.EventDispatcher
 Inherited[многоадресное событие] Отправляется, когда проигрыватель Flash Player или приложение AIR теряет фокус системы и становится неактивным.EventDispatcher
 Inherited
    displaying
Отправляется этим объектом NativeMenu непосредственно перед показом меню.NativeMenu
  Отправляется после того как пользователь создает контекстное меню, но перед отображением содержимого этого меню.ContextMenu
 Inherited
    preparing
Отправляется объектом NativeMenu при нажатии его эквивалентной комбинации клавиш и непосредственно перед отображением меню.NativeMenu
 Inherited
    select
Отправляется этим объектом 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

свойство 
numItems:int  [только для чтения] [переопределить]

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

Количество пунктов в данном меню.



Реализация
    override public function get numItems():int
Сведения о конструкторе

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 — Искомый пункт.

Возвращает
Booleantrue, если 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.

Это событие имеет следующие свойства:

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

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




[ X ]Почему по-английски?
Содержимое Справочника ActionScript 3.0 отображается на английском языке

Не все части Справочника ActionScript 3.0 переводятся на все языки. Если какой-то текстовый элемент не переведен, он отображается на английском языке. Например, компонент ga.controls.HelpBox не переведен ни на один из языков. Это значит, что в русской версии справки компонент ga.controls.HelpBox будет отображаться на английском языке.