打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
DropDownButton
自定义带有下拉菜单的组件 - DropDownButton

常见的一种按钮形式,一个按钮,右边一个小按钮,单击后出现下拉菜单,可以根据选择的下拉菜单项进行下一步处理,这里是演示(由于放在qq的临时上传空间里,不保证一直能用):

DropDownButton演示

组件全部代码如下(图片请自行替换):

DropDownButton.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:ButtonBar xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="init()">
<mx:Script>
   <![CDATA[
    import mx.controls.Menu;
    import mx.collections.ArrayCollection;
    import mx.events.MenuEvent;
    import mx.events.ItemClickEvent;
   
    [Embed(source='./assets/downarrow.png')]
      public static var downarrow:Class;
     
       private var myMenu:Menu;
       public var menuDatas:ArrayCollection = new ArrayCollection();
      
       //选中的下拉菜单项
       public var selected:String = null;
      
    function init():void{
     this.addEventListener(ItemClickEvent.ITEM_CLICK,itemclickHandler);
     var second:Object = this.getChildAt(1);
     second.width = "20";    
    }
   
    //显示菜单
            private function showMenus():void {
            var menus:XML = <menuitem/>;
           
            for (var i:int = 0;i<menuDatas.length;i++){
               var node:XML = <menuitem/>;
              node.@label = menuDatas[i].label;
              node.@data = menuDatas[i].data;
              node.@type = menuDatas[i].type;
               menus.appendChild(node);
            }
           
                myMenu= Menu.createMenu(this, menus, false);
                myMenu.labelField="@label";
                myMenu.addEventListener(MenuEvent.ITEM_CLICK, menuHandler);
               
                var p:Point =this.localToGlobal(new Point());
                myMenu.show(p.x + this.width - this.getChildAt(1).width, p.y + this.height);
            }      
           
            //事件处理
       function itemclickHandler(event:ItemClickEvent):void{
        switch (event.index){
         case 0:
          //不处理,事件广播出去
          this.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
          break;
         case 1:
          if (menuDatas.length>0){
           showMenus();
          }
          break;
       
        }
       }   
      
       //处理菜单单击事件,并将当前选择的项作为下拉按钮的提示信息       
            private function menuHandler(event:MenuEvent):void {
            selected = event.item.@data;
            var item:Object = this.getChildAt(1);
            item.toolTip = event.item.@label;
            }    
   ]]>
</mx:Script>
<mx:dataProvider>
   <mx:Object label="{this.label}"/>
   <mx:Object icon="{downarrow}"/>
</mx:dataProvider>
</mx:ButtonBar>

使用例子:

[Bindable]var menus:ArrayCollection = new ArrayCollection();
function init():void{
for(var i:int = 0;i<5;i++){
   var item:Object = new Object();
   item.label = "label"+i;
   item.data = "data"+i;
   menus.addItem(item);
}
ab.addEventListener(MouseEvent.CLICK,clickhandler);
}

...

function clickhandler(event:MouseEvent):void{
Alert.show("you selected : "+event.target.selected+",how do you want to do next?","you selected:");
}

<DropDownButton id="ab" label="搜索" x="14" y="29" menuDatas="{menus}"/>


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Flex之拖放
Flex实现分页显示功能(mx:DataGrid)
【转】谈谈Flex中ArrayCollection的复制(克隆)
Flex通用克隆(clone)方法
Flex2.0文件上传功能(Flex2.0正式版)
flex的一些图例
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服