Flex自定义右键菜单具体实现

本篇博客主要说明的是flex中屏蔽邮件菜单并且自定义菜单功能。

1、自定义右键菜单注册类

	public class RightClickManager 
	{ 
		static private var rightClickTarget:DisplayObject; 
		static public const RIGHT_CLICK:String = "rightClick"; 
		static private const javascript:XML = 
			; 
		public function RightClickManager() 
		{ 
			return; 
		} 
		static public function regist() : Boolean 
		{ 
			if (ExternalInterface.available) 
			{ 
				ExternalInterface.call(javascript, ExternalInterface.objectID); 
				ExternalInterface.addCallback("rightClick", dispatchRightClickEvent); 
				FlexGlobals.topLevelApplication.addEventListener(MouseEvent.MOUSE_OVER,mouseOverHandler); 
			}// end if 
			return true; 
		} 
		static private function mouseOverHandler(event:MouseEvent) : void 
		{ 
			//rightClickTarget = DisplayObject(event.target); 
			rightClickTarget = InteractiveObject(event.target); 
			return; 
		} 
		static private function dispatchRightClickEvent() : void 
		{ 
			var event:MouseEvent; 
			if (rightClickTarget != null) 
			{ 
				event = new MouseEvent(RIGHT_CLICK, true, false, rightClickTarget.mouseX, rightClickTarget.mouseY);
				//event = new ContextMenuEvent(RIGHT_CLICK, true, false, rightClickTarget as InteractiveObject, rightClickTarget as InteractiveObject); 
				rightClickTarget.dispatchEvent(event); 
			}// end if 
			return; 
		} 
	} 


2、设置index.template.html文件

打开自己的Flex工程下的html-template文件夹下的index.template.html文件(右击-Open With-Text Editor),在var params = {};语句的下面添加下面的语句: 
params.wmode = "opaque";//屏蔽系统右键菜单的关键 
3、在主程序文件中引入



	
		
	
	
		
	
	


效果图如附件。

Flex自定义右键菜单具体实现_第1张图片

注意:

1、刚发现的一些问题,使用自定义右键菜单后,无法对界面中的元素进行多选,即按住Ctrl键进行多选,去除jsp/html中的那行关键代码即可进行多选,但是无法使用自定义右键菜单了。暂无解决方案。

2、自定义右键后,无法在界面中输入中文,解决方案是:flex调用js的ui控件进行输入,输入完成后,调用flex方法传值。

3、项目中发现横向滚动条失效,纵向滚动条可用,但是鼠标滑轮滚动失效。解决方案:鼠标滚轮事件参考:http://blog.csdn.net/mygisforum/article/details/16904207


转自:http://www.jb51.net/article/36871.htm

你可能感兴趣的:(Flex)