Dogmat
Профессор
- Регистрация
- 16 Фев 2007
- Сообщения
- 122
- Реакции
- 40
- Автор темы
- #1
В этом небольшом уроке, разберем:
1. Что такое контекстное меню и с чем его едят?
2. Контекстная магия - как создать своё?
Контекстное меню возникает каждый раз когда вы кликаете правой кнопкой на работающем флешплеере(будь то самостоятельный запуск флеш ролика или в браузере). В этом случае может быть два варианта.
1. Контекстное меню состоит из одного не кликабельного элемента - "Movie not loaded"
2. Стандартное контекстное меню флеш ролика.
1ый вариант по понятным причинам нам не интересен и рассмотреть его собственно и нельзя
А вот второй вариант мы как раз и разберем.
По умолчанию нам покажется меню следующего содержания

О смысле того или иного пункта в меню вполне можно догадаться, поскольку названия говорящие, если не знаете английский lingvo.yandex.ru в помощь - пригодится
По сути для нашей флешки всё это лишнее и не нужное. Поэтому первое что мы сделаем - избавимся от избыточности. Делается это совсем просто.
В окне ввода кода в первом фрейме пишем следующее:
Теперь наше меню будет выглядеть так:

Меньше этого мы уже никак не сделаем
Но что же делать если пару пунктов мне все же нужны?
Ответ прост: Разрешить показ нужных пунктов =)
Например пункт - "Print" - согласитесь штука почти всегда нужная.
В итоге получилось следующее:

Помимо пункта Печати - там так же присутствуют следующие свойства в переменной builtInItems
Теперь пришло время добавить собственные пункты меню и реакцию на клик. Делается это не сложнее чем все предыдущие манипуляции.
Добавим два пункта меню:
1. Наш копирайт
2. Хеллоу ворлд - для "солидарности"
для этого нам нужно создать экземпляр класса ContextMenuItem для каждого нашего пункта и добавить его в уже существующий экземпляр ContextMenu
конструктор следующий:
ContextMenuItem(caption:String, separatorBefore:Boolean = false, enabled:Boolean = true, visible:Boolean = true);
caption - заголовок нашего пункта
separatorBefore - определяет наличие разделительной полоски перед пунктом
enabled - кликабельность пункта
visible - отображение пункта (может быть полезно различным RIA приложениям)
Вот и всё. Никаких танцев с бубнами.
Начал с простого по совету tut. Принимаются заявки на туториалы по Flash/Flex (ActionsScript 3.0)
Исходный проект во *.fla
1. Что такое контекстное меню и с чем его едят?
2. Контекстная магия - как создать своё?
Контекстное меню возникает каждый раз когда вы кликаете правой кнопкой на работающем флешплеере(будь то самостоятельный запуск флеш ролика или в браузере). В этом случае может быть два варианта.
1. Контекстное меню состоит из одного не кликабельного элемента - "Movie not loaded"
2. Стандартное контекстное меню флеш ролика.
1ый вариант по понятным причинам нам не интересен и рассмотреть его собственно и нельзя

По умолчанию нам покажется меню следующего содержания

О смысле того или иного пункта в меню вполне можно догадаться, поскольку названия говорящие, если не знаете английский lingvo.yandex.ru в помощь - пригодится

По сути для нашей флешки всё это лишнее и не нужное. Поэтому первое что мы сделаем - избавимся от избыточности. Делается это совсем просто.
В окне ввода кода в первом фрейме пишем следующее:
Код:
//создаем новый экземпляр контекстного меню
var myContextMenu:ContextMenu=new ContextMenu();
//прячем все меню по умолчанию
myContextMenu.hideBuiltInItems();
//подменяем корневое контекстное меню на свой экземпляр
this.contextMenu=myContextMenu;
Теперь наше меню будет выглядеть так:

Меньше этого мы уже никак не сделаем

Но что же делать если пару пунктов мне все же нужны?
Ответ прост: Разрешить показ нужных пунктов =)
Например пункт - "Print" - согласитесь штука почти всегда нужная.
Код:
//создаем новый экземпляр контекстного меню
var myContextMenu:ContextMenu=new ContextMenu();
//прячем все меню по умолчанию
myContextMenu.hideBuiltInItems();
//получаем ссылку на список встроенных менюшек
var builtInItems:ContextMenuBuiltInItems=myContextMenu.builtInItems;
// разрешаем показ пункта меню - Print
builtInItems.print=true;
//подменяем корневое контекстное меню на свой экземпляр
this.contextMenu=myContextMenu;
В итоге получилось следующее:

Помимо пункта Печати - там так же присутствуют следующие свойства в переменной builtInItems
- forwardAndBack
- loop
- play
- quality
- rewind
- save
- zoom
Теперь пришло время добавить собственные пункты меню и реакцию на клик. Делается это не сложнее чем все предыдущие манипуляции.
Добавим два пункта меню:
1. Наш копирайт
2. Хеллоу ворлд - для "солидарности"
для этого нам нужно создать экземпляр класса ContextMenuItem для каждого нашего пункта и добавить его в уже существующий экземпляр ContextMenu
конструктор следующий:
ContextMenuItem(caption:String, separatorBefore:Boolean = false, enabled:Boolean = true, visible:Boolean = true);
caption - заголовок нашего пункта
separatorBefore - определяет наличие разделительной полоски перед пунктом
enabled - кликабельность пункта
visible - отображение пункта (может быть полезно различным RIA приложениям)
Код:
// На сцене добавляем текстовый компонент из левой панельки с инструментами и указываем ID=trace_txt в свойствах этого элемента
// постфикс _txt и еще несколько расширений во Flash Ide позволяют использовать автозаполнение ;)
trace_txt.appendText('Launched\n');
//создаем новый экземпляр контекстного меню
var myContextMenu:ContextMenu=new ContextMenu();
//прячем все меню по умолчанию
myContextMenu.hideBuiltInItems();
//получаем ссылку на список встроенных менюшек
var builtInItems:ContextMenuBuiltInItems=myContextMenu.builtInItems;
// разрешаем показ пункта меню - Print
// builtInItems.print=true;
//определяем переменную
var item:ContextMenuItem;
// пункт для копирайта
item=new ContextMenuItem('© Nulled.ws');
// подписываемся на клик
item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,nulledClickHandler);
// добавляем в наше меню
myContextMenu.customItems.push(item);
// пункт Hello World
item=new ContextMenuItem('Hello World!!!',true);
// подписываемся на клик
item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,helloClickHandler);
// добавляем в наше меню
myContextMenu.customItems.push(item);
//подменяем корневое контекстное меню на свой экземпляр
this.contextMenu=myContextMenu;
function nulledClickHandler(e:ContextMenuEvent):void{
// переходим на nulled.ws =)
navigateToURL(new URLRequest('http://nulled.ws'),'nulled.ws window');
}
function helloClickHandler(e:ContextMenuEvent):void{
trace_txt.appendText('Hello world!\n');
}
Вот и всё. Никаких танцев с бубнами.
Начал с простого по совету tut. Принимаются заявки на туториалы по Flash/Flex (ActionsScript 3.0)
Исходный проект во *.fla