首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

flex 右键自定义与图标增添

2012-06-28 
flex 右键自定义与图标添加首先提供链接blog.sina.com.cn/s/blog_685ff0dc0100pmy6.html 感谢这位博主,参

flex 右键自定义与图标添加

首先提供链接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 stubif(!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>

?

热点排行