@AlexDesinger:
Код AS3:
package vaukalak.utils
{
import flash.display.DisplayObject;
import flash.display.InteractiveObject;
import flash.display.Stage;
import flash.events.Event;
import flash.external.ExternalInterface;
import flash.geom.Point;
/**
* ...
* @author vaukalak
*/
public class RightMouseEvent extends Event
{
public static const CLICK:String = "Right Click";
private static var _stage:Stage;
//переопределения класса Event
public function RightMouseEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
public override function clone():Event
{
return new RightMouseEvent(type, bubbles, cancelable);
}
public override function toString():String
{
return formatToString("RightMouseEvent", "type", "bubbles", "cancelable", "eventPhase");
}
//в метод enable нужно передать объект stage
public static function enable(stage:Stage):void {
_stage = stage;
ExternalInterface.addCallback("rightClick", _onRightClick);
}
//метод _onRightClick отыскивает непосредственно верхний объект под мышой, и приказывает объекту распространить событие
private static function _onRightClick():void {
var objs:Array = _stage.getObjectsUnderPoint(new Point(_stage.mouseX, _stage.mouseY));
(objs[objs.length-1] as DisplayObject).dispatchEvent(new RightMouseEvent(RightMouseEvent.CLICK,true));
}
}
}
Вот этот класс я написал для браузерных версий. По сути Вам нужно посмотреть только метод "_onRightClick". В flash IDE Если на ContextMenuEvent делать trace то (только при первом трэйсе) меню исчезнет. Может быть есть еще что-то что может спрятать его, но это вне предела моих знаний.