Флеш-ролики имеют такой обязательный элемент, как контекстное меню. Контекстное меню вызывается правым кликом мышки (ПКМ) по сцене флеш-ролика. Внешний вид контекстного меню, набор и количество пунктов в нём, зависит от версии флеш-плейера, а также от автора флеш-приложения. Так, установленный у меня сейчас флеш-плейер имеет по умолчанию следующее контекстное меню:
Разработчик флеш-приложения имеет возможность убрать некоторые стандартные пункты контекстного меню (но не все!), а также может добавить свои пункты в контекстное меню.
Итак, рассмотрим основные операции с контекстным меню флеш-ролика на ActionScript 2.0:
1.) Удаление стандартных пунктов контекстного меню флеш приложения.
Для данной операции необходимо на главной временной шкале прописать следующий код.
Код ActionScript 2.0
var menu = new ContextMenu();
menu.hideBuiltInItems();
После применения данного кода контекстное меню флеш-ролика приобрело следующий вид:
Как видно, ряд стандартных пунктов меню исчезло, но три пункта (учтите, их количество и названия могут различаться в разных флеш-плейерах) всё равно осталось:
- Параметры;
- Глобальные настройки;
- О программе...
Эти три перечисленные пункта являются обязательными и убрать их контекстного меню нельзя. Такое положение вещей оправданно, так как первые два пункта отвечают за действительно важные настройки флеш-плейера, а последний пункт, по сути, является рекламой от разработчиков.
Кстати, в AS 2.0 существует и ещё один способ убрать все необязательные пункты контекстного меню:
Stage.showMenu = false;
Данный способ работает также, как и предыдущий.
2.) Добавление новых пунктов в контекстное меню флеш-приложения.
Для добавления нового пункта в контекстное меню флеш-ролика допишем наш предыдущий код:
/*
скрываем обязательные пункты меню
*/
var menu = new ContextMenu();
menu.hideBuiltInItems();
/*
Добавляем новый пункт меню, который будет называться "автор приложения".
При клике по данному пункту меню будет выполняться функция myfunc.
*/
var myitem = new ContextMenuItem("автор приложения", myfunc);
/*
Функция, которая будет выполняться при клике по нашему пункту меню, будет отправлять нас на сайт автора приложения.
*/
function myfunc(){
getURL("http://edapskov.ru");
}
/*
Добавляем наш новый пункт меню в массив, где хранятся все пункты контекстного меню данного флеш-ролика.
*/
menu.customItems.push(myitem);
В результате работы данного кода мы получаем следующий результат:
Таким же образом можно добавить и другие пользовательские пункты в контекстное меню. Ниже приведён пример добавления двух новых пунктов в контекстное меню.
var menu = new ContextMenu();
menu.hideBuiltInItems();
var myitem1 = new ContextMenuItem("автор приложения", myfunc1);
function myfunc1(){
getURL("http://edapskov.ru");
}
var myitem2 = new ContextMenuItem("Я в Vkontakte", myfunc2);
function myfunc2(){
getURL("http://vk.com/edapskov");
}
menu.customItems.push(myitem1,myitem2);
Работа с контекстным меню в ActionScript 3.0 довольно сильно напоминает описанную выше работу с контекстным меню в ActionScript 2.0. Далее кратко опишем основные манипуляции с контекстным меню в AS 3.0:
1.) Удаление стандартных пунктов меню.
В ActionScript 3.0 для этого тоже можно использовать два подхода. Или код вида:
var menu:ContextMenu = new ContextMenu();
menu.hideBuiltInItems();
this.contextMenu = menu;
или следующий код:
stage.showDefaultContextMenu = false;
2.) Добавление новых пунктов.
Для добавления новых пунктов в контекстное меню можно использовать код AS 3.0 примерно следующего вида:
/*
Скрываем стандартные пункты меню.
*/
var menu:ContextMenu = new ContextMenu();
menu.hideBuiltInItems();
/*
Создаём новый пункт контекстного меню.
*/
var menuItem:ContextMenuItem = new ContextMenuItem("автор приложения");
menuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,edapskov);
function edapskov(event:ContextMenuEvent):void
{
navigateToURL(new URLRequest("http://edapskov.ru"));
}
/*
Добавляем новый пункт в массив, в котором хранятся пункты контекстного меню.
*/
menu.customItems.push(menuItem);
/*
Добавляем данное контекстное меню к флеш-ролику (или к определённому объекту в списке отображения, если в этом есть необходимость).
*/
this.contextMenu = menu;
Примечания:
[!] Не стоит размещать в контекстном меню важные функции флеш-приложения, так как пользователи крайне редко прибегают к контекстному меню и могут просто не найти эти функции. Как правило, в контекстное меню помещается информация о разработчиках данного приложения. Гораздо реже - некоторые второстепенные или дублирующие функции.
[!] При вызове контекстного меню над текстовым полем изменяется набор пунктов этого меню и в нём появляются специальные пункты для работы с текстом.
Никак. Нет такой возможности.