隐藏系统自带右键菜单,增加自定义菜单,用到RightClickManager。实现如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.events.MenuEvent;
import mx.controls.Menu;
import com.siloon.plugin.rightClick.RightClickManager;
private var menu:Menu;
private function init():void{
//隐藏系统右键菜单
RightClickManager.regist();
//创建新右键菜单
this.addEventListener(RightClickManager.RIGHT_CLICK, rightClickHandler);
}
private function rightClickHandler(event:MouseEvent):void{
removeMenu();
menu = new Menu();
menu = Menu.createMenu(this, createMenuItems(), false);
menu.labelField="label";
menu.variableRowHeight = true;
menu.addEventListener(MenuEvent.ITEM_CLICK, menuItemClickHandler);
var point:Point = new Point(mouseX,mouseY);
point = localToGlobal(point);
menu.show(point.x,point.y);
}
private function removeMenu():void{
if(menu!=null){
menu.hide();
menu.removeEventListener(MenuEvent.ITEM_CLICK,menuItemClickHandler);
menu=null;
}
}
private function createMenuItems():Array{
var menuItems:Array = new Array();
var menuItem:Object;
menuItem = new Object;
menuItem.label = '菜单一';
menuItem.action = 'menu1ClickedAction';
menuItems.push(menuItem);
menuItem = new Object;
menuItem.label = '菜单二';
menuItem.action = 'menu2ClickedAction';
menuItems.push(menuItem);
return menuItems;
}
private function menuItemClickHandler(event:MenuEvent):void{
//TODO 增加菜单选择事件的响应
}
]]>
</mx:Script>
</mx:Application>