`
demojava
  • 浏览: 553495 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics