flex ContextMenuItem 依据状态隐藏选项
flex ContextMenuItem 根据状态隐藏选项
因群里一个群员的要求,写了这个demo,代码粗糙,根据一个控件的enabled属性来设定 ContextMenuItem 中某一项是否可用。。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="middle" horizontalAlign="center" creationComplete="init1()" > <mx:Script> <![CDATA[ import mx.controls.Alert; import flash.ui.ContextMenu; import flash.ui.ContextMenuItem; import flash.events.ContextMenuEvent; //在全局上定义四个菜单条目 private var myMenuItem1:ContextMenuItem; private var myMenuItem2:ContextMenuItem; private var myMenuItem3:ContextMenuItem; private var myMenuItem4:ContextMenuItem; private var myMenu:ContextMenu; private var myMenu2:ContextMenu; //开始初始化 private function init1():void { myMenuItem1 = new ContextMenuItem('全局的 菜单',true); myMenuItem1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,menuItemHandler); //全局的 菜单 myMenu = new ContextMenu(); myMenuItem1.enabled=false; myMenu.customItems.push(myMenuItem1); myMenu.hideBuiltInItems(); //隐藏指定的 ContextMenu 对象中的所有内置菜单项(“设置”除外)。 this.contextMenu = myMenu; //textinput 菜单 var myMenu2 = new ContextMenu(); myMenu2.addEventListener(ContextMenuEvent.MENU_SELECT, menuSelectHandler); myMenuItem3 = new ContextMenuItem('textinput1 菜单',true); myMenu2.customItems.push(myMenuItem3); txt1.contextMenu=myMenu2; txt.contextMenu=myMenu2; } private function menuSelectHandler(d:ContextMenuEvent):void { //获取点击对象信息 var text:TextInput=d.contextMenuOwner as TextInput; if(text!=null) { if(text.enabled) { myMenuItem3.enabled=true; }else { myMenuItem3.enabled=false; } } } //导航逻辑 private function menuItemHandler(event:ContextMenuEvent):void { switch (event.target) { case myMenuItem1: navigateToURL(new URLRequest('http://www.google.cn/')); break; case myMenuItem2: navigateToURL(new URLRequest('http://www.baidu.com/')); break; case myMenuItem3: navigateToURL(new URLRequest('http://sports.sohu.com/')); break; } } private function demoHandler():void { var functionName:String = "demo"; if (this.hasOwnProperty(functionName)) this[functionName](); } ]]> </mx:Script> <mx:TextInput text="可在舞台任何地方右击菜单" fontSize="13" id="txt" enabled="false"/> <mx:TextInput text="可在舞台任何地方右击菜单" fontSize="13" id="txt1"/> <mx:Button label="demo" click="demoHandler()" > </mx:Button> </mx:Application>