Создание исходных меню (AIR)

Adobe AIR 1.0 и более поздних версий

В этом разделе рассказывается, как создавать исходные меню различных типов, поддерживаемые средой AIR.

Создание объекта корневого меню

Чтобы создать объект NativeMenu, который будет служить корневым меню, воспользуйтесь конструктором NativeMenu:

var root:NativeMenu = new NativeMenu(); 

В случае меню программ и окон корневое меню — это строка меню, в которой могут быть только пункты, содержащие подменю. Контекстные и всплывающие меню не имеют строки меню, поэтому в их случае корневое меню может содержать не только подменю, но также команды и линии-разделители.

После создания меню можно добавлять в него пункты. Пункты отображаются в меню в том порядке, в котором они были добавлены, кроме случаев, когда пункты выводятся по индексам с помощью метода addItemAt() объекта меню.

Меню может относиться к программе, окну, значку, быть контекстным или всплывающим. Все эти типы описываются ниже:

Настройка меню программы или меню окна

Важно, чтобы создаваемый код был приспособлен как к меню приложения (поддерживается в Mac OS), так и к меню окна (поддерживается в других операционных системах)

var root:NativeMenu = new NativeMenu(); 
if (NativeApplication.supportsMenu) 
{ 
    NativeApplication.nativeApplication.menu = root; 
} 
else if (NativeWindow.supportsMenu) 
{ 
    nativeWindow.menu = root; 
}
Примечание. В Mac OS для каждого приложения определяется меню со стандартными элементами. Если назначить объект NativeMenu свойству menu объекта NativeApplication, стандартное меню будет заменено. Можно не заменять меню, а использовать стандартное.

В Adobe Flex представлен класс FlexNativeMenu, позволяющий легко создавать меню, которые работают на разных платформах. Если вы применяете Flex Framework, используйте классы FlexNativeMenu вместо класса NativeMenu.

Настройка контекстного меню интерактивного объекта

interactiveObject.contextMenu = root;

Настройка меню значка Dock или меню значка на панели задач

Важно, чтобы создаваемый код был приспособлен как к меню приложения (поддерживается в Mac OS), так и к меню окна (поддерживается в других операционных системах)

if (NativeApplication.supportsSystemTrayIcon) 
{ 
    SystemTrayIcon(NativeApplication.nativeApplication.icon).menu = root; 
} 
else if (NativeApplication.supportsDockIcon) 
{ 
    DockIcon(NativeApplication.nativeApplication.icon).menu = root; 
}
Примечание. В Mac OS X определено стандартное меню для значка Dock. Если назначить новый объект NativeMenu свойству menu объекта DockIcon, его пункты будут отображаться над стандартными. Удалить или изменить пункты стандартного меню нельзя.

Отображение всплывающего меню

root.display(stage, x, y); 

Создание подменю

Для создания подменю добавьте объект NativeMenuItem в родительское меню, затем назначьте объект NativeMenu, определяющий подменю свойства submenu этого пункта. В AIR пункты подменю и связанные с ними объекты меню можно создавать двумя способами.

Пункт меню и связанный с ним объект меню можно создать одновременно с помощью метода addSubmenu() :

var editMenuItem:NativeMenuItem = root.addSubmenu(new NativeMenu(), "Edit"); 

Создать элемент меню и назначить объект меню его свойству submenu по отдельности:

var editMenuItem:NativeMenuItem = root.addItem("Edit", false); 
editMenuItem.submenu = new NativeMenu(); 

Создание команды меню

Для создания команды меню добавьте в меню объект NativeMenuItem и добавьте прослушиватель событий, ссылающийся на функцию, которая реализует команду меню:

var copy:NativeMenuItem = new NativeMenuItem("Copy", false); 
copy.addEventListener(Event.SELECT, onCopyCommand); 
editMenu.addItem(copy);

Событие select может прослушиваться на самом пункте-команде (как показано в примере). Также select может прослушиваться в родительском объекте меню.

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

Создание линий-разделителей в меню

Для создания линии-разделителя создайте объект NativeMenuItem и задайте параметру isSeparator значение true в конструкторе. Затем добавьте элемент разделителя в нужное место в меню:

var separatorA:NativeMenuItem = new NativeMenuItem("A", true); 
editMenu.addItem(separatorA);

Если разделителю присвоена какая-либо метка, она не отображается.