ActionScript3 пользовательское меню при нажатии правой кнопки мышки

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

По-этому если Вы начали разбираться с технологией флеш, делать первые шаги и создавать первые приложения, у Вас появится желание заменить меню Adobe на своё собственное. Сегодня мы разберем код экшен скрипта который:
а) отключит большую часть стандартного меню;
б) добавит вместо него Ваш собственный текст (например сообщение о версии приложения и авторе);
в) подключит произвольную функцию срабатывающую при нажатии на пункт в контекстном меню (в нашем случае -функция открывает страницу сайта в новом окне).
/* объявляем переменные которые понадобятся нам ниже */
var mainSite:*;
var siteURL:String = "http://weblomaster.ru/";
var firstText:String = "New Menu version 1.1.2";
var secondText:String = "Supported by Weblomaster.ru";
/* сама функция нового меню */
function NewMenu() : void
{
/* функция в функции - она будет вызываться при нажатии на новый пункт меню */
mainSite = function (event:ContextMenuEvent) : void
{
/* задача функции открыть сайт , адрес сайта записан выше в переменной siteURL */
navigateToURL(new URLRequest(siteURL));
return;
}
;
/* создаём новое контекстное меню */
var menu:* = new ContextMenu();
/* скрываем лишние пункты меню по-умолчанию */
menu.hideBuiltInItems();
/* добавляем свои два новых пункта меню, текст указан в переменных вверху кода firstText и secondText */
var firstPoint:* = new ContextMenuItem(firstText);
var secondPoint:* = new ContextMenuItem(secondText);
/* ставим разделительную черту между первым и вторым своими пунктами */
secondPoint.separatorBefore = true;
/* добавляем прослушивание события такого как выбор - клик по нашему первому пункту , если клик произошел срабатывает функция mainSite - открывается сайт */
firstPoint.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, mainSite);
/* добавляем второй наш пункт к первому */
menu.customItems.push(firstPoint, secondPoint);
/* слушаем событие - при нажатии на второй пункт тоже открываем сайт */
secondPoint.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, mainSite);
/* ниже вызываем наше, только что созданное, меню */
contextMenu = menu;
return;
}
/* вызов функции при запуске приложения */
NewMenu();

Вот как должно получится (наведите и нажмите правую кнопку мыши):

 

Вы можете скачать исходник (.FLA) с пояснениями здесь.

Опубликовано 19.08.2014 в 17:50 · Автор Вебдизайнеру, сисадмину, вебмастеру · Ссылка
Рубрики: ActionScript 3 (AS3) · Теги: , , , , , , , , ,