Кристофер Хайлер опубликовал что-то похожее (исходный код доступен здесь ).Из статьи:
Начните с получения кода Javascript из репозитория кода Google .
Шаг 1 - Настройка кода пользовательского контекстного меню
Создайте новый проект Flex в Flex Builder.Скопируйте rightclick.js и swfobject.js в папку html-template вашего проекта.После этого мне пришлось внести несколько изменений ...
- Я изменил функцию RightClick.init (), чтобы принимать значение объекта и контейнера в качестве входных данных.Это позволяет мне передавать имя приложения в качестве объекта вместо того, чтобы каждый раз вызывать его одно и то же.
- Я включил rightclick.js и swfobject.js в заголовок index.template.html..
- Я добавил новый элемент div в тело, называемый flashcontent.
- Я добавил обработчик загрузки в тег body, чтобы инициализировать RightClick
- Я заменил AC_FL_RunContent (…)с новым SWFObject (…), обеспечивающим поддержание всех переменных шаблона.
После внесения этих изменений я убедился, что контекстное меню правой кнопкой мыши не появляется в моем приложении.
Шаг 2. Прослушивание события rightClick
Затем я добавил несколько строк в основной mxml-файл моего приложения, чтобы прослушать событие ExternalInterface, которое будет отправлено при щелчке правой кнопкой мыши приложения.
private function handleCreationComplete():void
{
ExternalInterface.addCallback("rightClick", handleRightClick);
}
private function handleRightClick():void
{
Alert.show("Right Click Success!");
}
Шаг 3 - отправка события на правильный объект
Получить событие в основное приложение легко, но мы действуемВы хотите, чтобы соответствующий дочерний объект был уведомлен, когда происходит событие щелчка правой кнопкой мыши.Поскольку я не использую в своем приложении события двойного щелчка, я решил, что каждое событие правого клика будет рассматриваться как событие двойного щелчка.Пользователи без двухкнопочной мыши (или пользователи Mac) могут просто дважды щелкнуть мышью, чтобы открыть то же меню, а пользователи с двухкнопочной мышью просто щелкнуть правой кнопкой мыши.Вот как я могу убедиться, что событие отправлено соответствующему объекту.
private function handleRightClick():void
{
var objects:Array = systemManager.getObjectsUnderPoint(
new Point(mouseX,mouseY));
if (objects.length>0)
{
var object:Object = objects[objects.length-1];
var relatedObject:InteractiveObject;
if (object is InteractiveObject)
relatedObject = object as InteractiveObject;
else if (object.parent && object.parent is InteractiveObject)
relatedObject = object.parent;
var event:MouseEvent = new MouseEvent(
MouseEvent.DOUBLE_CLICK,true,false,mouseX,mouseY,
relatedObject);
object.dispatchEvent(event);
}
}
Надеюсь, это поможет!