SoFunction
Updated on 2025-02-28

Flex custom right-click menu implementation


package
{
import ;
import ;
import ;
import ;
import ;
import ;
public class RightClickManager
{
static private var rightClickTarget:DisplayObject;
static public const RIGHT_CLICK:String = "rightClick";
static private const javascript:XML =
<script>
<![CDATA[
/**
*
* Copyright 2007
*
* Paulius Uza
*
*
* Dan Florio
*
*
* Project website:
* /p/custom-context-menu/
*
* --
* RightClick for Flash Player.
* Version 0.6.2
*
*/
function(flashObjectId)
{
var RightClick = {
/**
* Constructor
*/
init: function (flashObjectId) {
= flashObjectId;
= ;
if(){
("mousedown", (), true);
} else {
(). = function() { ().(); }
= function(){ if( == ) { return false; } else { = "nan"; }}
(). = ;
}
},
/**
* GECKO / WEBKIT event overkill
* @param {Object} eventObject
*/
killEvents: function(eventObject) {
if(eventObject) {
if () ();
if () ();
if () ();
if () ();
}
},
/**
* GECKO / WEBKIT call right click
* @param {Object} ev
*/
onGeckoMouse: function(ev) {
return function(ev) {
if ( != 0) {
(ev);
if( == && == ) {
();
}
= ;
}
}
},
/**
* IE call right click
* @param {Object} ev
*/
onIEMouse: function() {
if ( > 1) {
if( == && == ) {
();
}
().();
if()
= ;
}
},
/**
* Main call to Flash External Interface
*/
call: function() {
().rightClick();
}
}
(flashObjectId);
}
]]>
</script>;
public function RightClickManager()
{
return;
}
static public function regist() : Boolean
{
if ()
{
(javascript, );
("rightClick", dispatchRightClickEvent);
(MouseEvent.MOUSE_OVER,mouseOverHandler);
}// end if
return true;
}
static private function mouseOverHandler(event:MouseEvent) : void
{
//rightClickTarget = DisplayObject();
rightClickTarget = InteractiveObject();
return;
}
static private function dispatchRightClickEvent() : void
{
var event:MouseEvent;
if (rightClickTarget != null)
{
event = new MouseEvent(RIGHT_CLICK, true, false, , );
//event = new ContextMenuEvent(RIGHT_CLICK, true, false, rightClickTarget as InteractiveObject, rightClickTarget as InteractiveObject);
(event);
}// end if
return;
}
}
}