读书人

flex ContextMenuItem 依据状态隐藏选

发布时间: 2012-09-03 09:48:39 作者: rapoo

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>

?

读书人网 >flex

热点推荐