`
阅读更多
首先提供链接blog.sina.com.cn/s/blog_685ff0dc0100pmy6.html 感谢这位博主,参考他的博文之后做出来的。附件两张图片,一张为右键效果图,一张为右键菜单点击事件测试图
由于他的的代码是从项目中抠出来的,所以部分方法和对象连不上,贴上自己试验成功的代码。前期工作,如.as文件的下载和修改请参照上面的链接,xmlns部分的代码看这就行了(注释部分请跳过,为上面连接处的无用代码)
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
			   xmlns:s="library://ns.adobe.com/flex/spark"
			   xmlns:mx="library://ns.adobe.com/flex/mx"
			   xmlns:local="*"
			   minWidth="1000" minHeight="650" creationComplete="init()">
	<s:layout>
		<s:BasicLayout/>
	</s:layout>
	<fx:Declarations>
		<!-- 将非可视元素(例如服务、值对象)放在此处 -->
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			import com.siloon.plugin.rightClick.RightClickManager;
			import mx.controls.Alert;
			import mx.controls.Menu;
			import mx.controls.listClasses.IListItemRenderer;
			import mx.events.FlexEvent;
			import mx.events.MenuEvent;
			[Event(name="rightClick",type="flash.events.ContextMenuEvent")]
			[Embed("images/tree0.png")] 
			private var treeImg0:Class;//此处请写自己的图片路径[Embed("自己图片路径")]
			[Embed("images/tree1.png")] 
			private var treeImg1:Class;
			[Embed("images/tree2.png")] 
			private var treeImg2:Class;
			[Embed("images/tree3.png")] 
			private var treeImg3:Class;
			[Embed("images/tree4.png")] 
			private var treeImg4:Class;
			[Embed("images/tree5.png")] 
			private var treeImg5:Class;
			[Embed("images/tree6.png")] 
			private var treeImg6:Class;
			
			protected var rightClickRegisted:Boolean=false;
			private var menu:Menu;
			
			protected function init():void
			{
			if(!rightClickRegisted){
			RightClickManager.regist();
			rightClickRegisted=true;
			}
			tree.addEventListener(RightClickManager.RIGHT_CLICK,LableRightClickHandler);
			}
			private function LableRightClickHandler(event:ContextMenuEvent):void{
			label_onRightClicked(event);
			label_removeMenu();
			label_InitMenu();
			}
			private function label_onRightClicked(event:ContextMenuEvent):void{
			var rightClickItemRender:IListItemRenderer;
			var rightClickIndex:int;
			if(event.mouseTarget is IListItemRenderer){
			rightClickItemRender=IListItemRenderer(event.mouseTarget);
			}
			else if(event.mouseTarget.parent is IListItemRenderer){
			rightClickItemRender=IListItemRenderer(event.mouseTarget.parent);
			}
	        if(rightClickItemRender !=null){
			
			}
			}
			private function label_removeMenu():void{
			if(menu!=null){
			menu.hide();
			menu.removeEventListener(MenuEvent.ITEM_CLICK,label_MenuItemSelected);
			menu=null;
			}
			}
			private function label_InitMenu():void{
			menu=Menu.createMenu(this,label_createMenuItems(),false);
			menu.iconField="itemIcon";
			menu.labelField="label";
			menu.variableRowHeight=true;//此处为不统一行高,看附件图片可以看到右键菜单高度不一
			menu.addEventListener(MenuEvent.ITEM_CLICK,label_MenuItemSelected);//给菜单一个监听事件
			var point:Point=new Point(mouseX,mouseY);//此部分为显示右键菜单
			point =localToGlobal(point);
			menu.show(point.x,point.y);
			}
			private function label_createMenuItems():Array{//此处为添加右键菜单选项及图片
			var menuItems:Array=new Array();
			var menuItem1:Object=new Object;
			menuItem1.label="刷新";
		    menuItem1.itemIcon=this.treeImg0;
			menuItems.push(menuItem1);
			var menuItem2:Object=new Object;
			menuItem2.label="关闭";
			menuItem2.itemIcon=this.treeImg1;
			menuItems.push(menuItem2);
			return menuItems;
			}
			private function label_MenuItemSelected(event:MenuEvent):void{//菜单被选中触发此方法
			       var menuItem:Object=event.menu.selectedItem as Object;
				   switch(menuItem.label){
				   case"刷新":Alert.show("hello,event has worked!");
					   break;
				   }
			}
	/* 		protected function init():void
			{
				// TODO Auto-generated method stub
				if(!rightClickRegisted){
				RightClickManager.regist();
				rightClickRegisted=true;
				}
				tree.addEventListener(RightClickManager.RIGHT_CLICK,treeRightClickHandler);
			}
			
			private function treeRightClickHandler(event:ContextMenuEvent):void{
			tree_onRightClicked(event);
			tree_removeMenu();
			tree_InitMenu();
			}
			
			private function tree_onRightClicked(event:ContextMenuEvent):void{
			 var rightClickItemRender:IListItemRenderer;
			 var rightClickIndex:int;
			 if(event.mouseTarget is IListItemRenderer){
			 rightClickItemRender=IListItemRenderer(event.mouseTarget.parent);
			 }
			 if(rightClickItemRender !=null){
			 rightClickIndex=tree.itemRendererToIndex(rightClickItemRender);
			  if(tree.selectedIndex !=rightClickIndex){
			  tree.selectedIndex=rightClickIndex;
			  }
			 }
			}
			
			private function tree_removeMenu():void{
			if(menu!=null){
				menu.hide();
				menu.removeEventListener(MenuEvent.ITEM_CLICK,tree_MenuItemSelected);
				menu=null;
			}
			}
			
			private function tree_InitMenu():void{
			menu=Menu.createMenu(this,tree_createMenuItems(),false);
			menu.iconField="itemIcon";
			menu.labelField="label";
			menu.variableRowHeight=true;
			menu.addEventListener(MenuEvent.ITEM_CLICK,tree_MenuItemSelected);
			var point:Point=new Point(mouseX,mouseY);
			point=localToGlobal(point);
			menu.show(point.x,point.y);
			}
			
			private function tree_createMenuItems():Array{
			var menuItems:Array=new Array();
			var menuItem:Object;
			menuItem=new Object;
			menuItem.label="刷新";
			menuItem.itemIcon=this.treeImg0;
			menuItems.push(menuItem);
			 var currentItem:XML=tree.selectedItem as XML;
			var depth:Number=GetDepth(currentItem);
			if(depth==0){
			if(GetRootNode(currentItem).attribute("tag").toString()=="gyfasctz"||GetRootNode(currentItem).attribute("tag").toString()=="myfasctz"||GetRootNode(currentItem).attribute("tag").toString()=="szfasctz"){
			FascRightMenu(menuItems);
			}
			else{
			LctypeRightMenu(menuItems);
			}
			}
			return menuItems;
			} 
			
			public function SetTreeIcon(item:Object):*{
				var itemXml:XML=item as XML;
				switch(itemXml.attribute("imgIndex").toString())
				{
					case "0":
						return treeImg0;
						break;
					case "1":
						return treeImg1;
						break;
					case "2":
						return treeImg2;
						break;
					case "3":
						return treeImg3;
						break;
					case "4":
						return treeImg4;
						break;
					case "5":
						return treeImg5;
						break;
					case "6":
						return treeImg6;
						break;
					default:
						break;
				}
			}
			
			private function FascRightMenu(menuItems:Array):void{
			var menuItem:Object=new Object;
			menuItem.label="添加台账";
			menuItem.itemIcon=this.treeImg1;
			menuItems.push(menuItem);
			
			}
			private function LctypeRightMenu(menuItems:Array):void
			{
				var menuItem:Object = new Object;  
				menuItem.label = "新增一次审批";   
				menuItem.itemIcon = this.treeImg2;
				menuItems.push(menuItem);
			}
			
			private function tree_MenuItemSelected(event:MenuEvent):void{
			var menuItem:Object=event.menu.selectedItem as Object;
			//...................................
			
			switch(menuItem.label)
			{
			case"刷新":
				//...............
				break;
			//..........................
			}
			}
			
			
			
			private function GetDepth(item:XML):Number
			{
				if(item.parent()==null)
				{
					return -1;/**因为有root节点,不算其深度*/
				/* }
				else
				{
					return GetDepth(item.parent())+1;
				}}
			private function GetRootNode(item:XML):XML
			{
				while(item.parent()!=null && (item.parent() as XML).parent()!=null)
				{
					item=item.parent();
				}
				return item;
			} */ 
		]]>
	</fx:Script>
	
<!--	<mx:Tree id="tree" left="10" top="151" bottom="10" width="272" doubleClickEnabled="true"
			 dropShadowVisible="false" iconFunction="SetTreeIcon" labelField="@value"
			 showRoot="false">
		
	</mx:Tree-->
<!--	<mx:Tree id="xmTree" left="9" top="6" width="272" height="141" doubleClickEnabled="true"
			 dropShadowVisible="false" iconFunction="SetTreeIcon" labelField="@value"
			 showRoot="false">
	</mx:Tree>-->
	<s:Label id="tree" text="rightClick here" height="25%" width="100%" fontSize="20"/>
	
</s:Application>

 

  • 大小: 2.5 KB
  • 大小: 5.2 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics