首先提供链接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
分享到:
相关推荐
Flex 3完整的右键自定义菜单Demo
flex 自定义右键菜单 多级右键菜单flex 自定义右键菜单 多级右键菜单flex 自定义右键菜单 多级右键菜单
Flex自定义右键菜单
flex右键菜单完全屏蔽右键 可以自定义;导入后可以直接应用;绝对值; 非js屏蔽
flex树自定义节点图标的页面及自定义树形组件源码
Flex添加右键菜单,只是文档,里边有描述性的代码
flex 右键菜单两种实现: 1.系统右键菜单,系统右键菜单项中添加菜单项 2.屏蔽系统右键菜单,自定义右键菜单
flex 右键菜单两种实现: 1.系统右键菜单,系统右键菜单项中添加菜单项 2.屏蔽系统右键菜单,自定义右键菜单
Flex右键菜单 flex tree 右键菜单 导入eclipse可直接用。我使用的flex sdk 版本是flex4.5.1,更改为4.0可直接使用。
flex右键例子
flex添加右键菜单实例。很经典的实例。
具体信息见博文:http://blog.csdn.net/yc2503yc/archive/2011/05/18/6429872.aspx
FLEX自定义等待图标资源 18个SWF资源,19个GIF资源
对初学者有用,一个简单的flex 自定义右键菜单
Flex4自定义组件 介绍了flex中如何自定义组件以及相关应用
flex4 自定义事件 用法 源码 完整项目导入可运行
实现右键点击事件,及完全屏闭系统右键菜单 并自定义右键菜单
Arcgis flex api自定义风场点图标样式
flex右键菜单代码,很不错的哦。分享给大家;