Flex控件

<1>布局管理控件:

1. <appliction>Layout:

---  vertical:stage中的所有组件垂直表现。

---  horizontal: stage中的所有组件水平表现。

---  absolute: stage中的所有组件利用自己的x,y坐标控制。

2. <vb></vb>对其中的controls垂直排放

3. <hb></hb>对其中的controls水平排放

4. <canvas></canvas>可以容纳组件的容器,默认的为absolute格式,组件只能用(x,y)来显示;也有RelativePositon,这里通过top,left,button,right,horizontalCenter,verticalCenter的值来实现,当窗口大小变化时,组件跟着变动。

5. <form></form>form表单容器,通过<formitem></formitem>来组织组件。有表单头<formheader/>.

6. <HDividedBox></HDividedBox>水平方向可以随便改变大小

7. <VDividedBox></VDividedBox>垂直方向可以随便改变大小

8. <Grid></Grid>表格容器,相当于<table></table>

9. <panel></panel>面板容器,是一种stage,可以表现appliction中的所有组件,可以设置他的absolute和RelativePosition。

10.<TitleWindow></TitleWindow>一种窗口,可以动态生成。

11.<Tile></Tile> ??

12.<Spacer></Spacer>??

13.<HRule></Hrul>

14.<VRule></VRule>

15.<ControlBar></ControlBar>??

16.<ModuleLoader></ModuleLoder>??

<2>导航控件:

1. <Accordion Pane><>

2. <TabNavigator><>

3. <LinkBar><>?

4. <TableBar><>?

5. <MenuBar><MenuBar>?

6. <ToggleButtonBar><>?

<3>普通控件:

  1. 1.  <DataGrid>规则化组织数据,dataProvider属性指定显示的数据源,editable属性的bool指定是否可改动。

<datacolumns>

<dataGrideColum   dataField=”” headerText=“”、>

</datacolumns>

  1. 2.  <AdvancedDataGrid>可以调整记录的顺序。

 

<4>Chart图:

 

//  Tree Control /

1. 创建树的方式:XML、XMLList组织。

2. 添加、删除树节点:

3. 给结点添加图标:

4. 为结点添加响应函数TreeEvent:

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

 

<!--TreeControl的创建与消息响应-->

<!--响应Tree控件事件:TreeEvent.itemOpen,Event.change,详细请查阅Tree-->

<mx:Script>

    <![CDATA[

    import mx.controls.*;

    import mx.events.*;

    import flash.events.*;  

   

//利用XML来定义树Tree 

   [Bindable]

   private var tree:XML=

       <root>

         <node label="car">

            <node label="Car_A"/>

            <node label="Car_B"/>

         </node>

         <node label="bus">

            <node label="bus_a"/>

            <node label="bus_b"/>

         </node>

         <node label="bike">

            <node label="bike_a"/>

            <node label="bike_b"/>

            <node label="bike_c"/>

         </node>

      </root>;

/ Tree的事件响应函数 /

//处理Tree改变的事件

    private function onChange(event:Event):void{

       treeshow.text = event.type + " \n";

    }

    private function onItemOpen(event:TreeEvent):void{

       treeshow.text = event.item.@label;

    }

//利用expandItem()方法,实现当树显示时打开树 Tree中的某个节点 node

   private function initTree():void{

      mapTree.expandItem(layers.getItemAt(0),true);

      mapTree.expandItem(layers.getItemAt(1),true);

      treeshow.text = mapTree.openItems[1].@label;   //被打开的节点在openItem【】中

       mapTree.selectedIndex =2;

   }

 

///  动态打开某个结点    

//打开指定的Tree中的某个结点,通过URL参数实现,由服务器或者其他用户请求如:..url:0=1&1=2&2=0

   private var openSequence:Array = [];  

   private function initApp():void{      //用于ApplicationComplete加载是调用

   var paramlen:int = 0;

   for(var str:String in Application.application.parameters)

   {

      if(!isNaN(Number(str))){

         openSequence[str] = Application.application.parameters[str];   //将参数指定到数组中

         paramlen +=1;

      }

   }

   openNodeAsUrl();   //打开url参数指定的结点

   }

   private function openNodeAsUrl():void{

   //XML定义的tree转化为XMLListCollection对象

   var nodelist:XMLListCollection = myTree.dataProvider as XMLListCollection;

   var node:XMLList = nodelist.source;

   //搜集所有xmllistTree结点,查找指定xml型的node对象

   for(var i:int=0;i<openSequence.length;i++){

     var j:int = openSequence[i];

     var n:XML = node[j];     //指定结点

     if(n.children()!=null){

       myTree.expandItem(n,true);    //展开该结点,接续查找

       node = n.children();

     }else{

       break;

     }

   }

   if(n!=null)

   myTree.selectedItem = n; 

   }

  

/ 为树节点指定icon

   [Bindable]

   [Embed(source = "/img/3.JPG")]

   public var rootIcon:Class;

   [Bindable]

   [Embed(source = "/img/4.JPG")]

   public var leafIcon:Class;

  

  

动态加载和删除叶结点 ///

//class1加叶子结点xD,删除class1xB

  [Bindable]

  private var school:XML=

  <list>

     <sclass name="class1">

        <student name="xA"/>

        <student name="xB"/>

        <student name="xC"/>

     </sclass>

     <sclass name="class2">

        <student name="yA"/>

        <student name="yB"/>

        <student name="yC"/>

     </sclass>  

  </list>;

  [Bindable]

  private var treeData:XMLListCollection = new XMLListCollection(school.sclass);

 

  private function treelabel(item:Object):String{

    var node:XML = XML(item);

    if(node.localName() == "class1"){

        return node.@title;

    }else{

        return node.@name;

    }

  }

  //添加学生xD

  private function addStudent():void{

    var newnode:XML = <student/>;

    newnode.@name=stu.text;

    var sc:XMLList = school.sclass.(@title == "class1");

    if(sc.length()>0){

        sc[0].appendChild(newnode);     //添加函数

        stu.text="";

    }

  }

  //删除学生xB

  private function deletStudent():void{

    var node:XML = XML(my_Tree.selectedItem);

    if(node==null) return;

    if(node.localName()!="student"return;

    var child:XMLList=XMLList(node.parent()).children();

    for(var i:int=0;i<child.length();i++){

      if(child[i].@name == node.@name){

        delete child[i];

      }

    }

  }

    ]]>

</mx:Script>

 

 

<!--      mx控件区域    -->

<!--创建控件:-->

<!--在加载initTree()事件时,是响应creationComplete事件-->

<mx:Tree id="mapTree" labelField="@label" showRoot="true" width="30%"

    itemOpen="onItemOpen(event)" change="onChange(event)" creationComplete="initTree()"

    iconField="@icon">

    <mx:XMLListCollection id="layers">

       <mx:XMLList>

           <folder label="water" icon="rootIcon">

              <folder label="w_A" icon="leafIcon"/>

              <folder label="W_B">

                  <Pfolder label="W_B_A" icon="leafIcon"/>

                  <Pfolder label="W_B_b" icon="leafIcon"/>

                  <Pfolder label="W_B_C" icon="leafIcon"/>

              </folder>

              <folder label="W_C"/>

           </folder>

      

           <folder label="land" icon="rootIcon">

               <folder label="L_A"/>

              <folder label="L_B">

                  <Pfolder label="L_B_A" icon="leafIcon"/>

                  <Pfolder label="L_B_b" icon="leafIcon"/>

                  <Pfolder label="L_B_C" icon="leafIcon"/>

              </folder>

              <folder label="L_C"/>

           </folder>

       </mx:XMLList>

    </mx:XMLListCollection>

</mx:Tree>

 

<!--利用XML加载-->

<mx:Tree id="myTree" y="300" dataProvider="{tree.node}" labelField="@label" width="15%"/>

<mx:Text  id="treeshow" x="500" width="60%"/>

 

<!--将xml转化为xmllistcollection加载-->

<mx:Tree id="my_Tree"  x="250" y="300" dataProvider="{treeData}" labelFunction="treelabel" width="15%"/>

<mx:Label text="输入要添加的学生名:" x="200" y="500"/>

<mx:TextInput id="stu" x="300" y="500" width="3%"/>

<mx:Button id="add" label="添加" x="350" y="500" click="addStudent()"/>

<mx:Button id="remove" label="删除" x="400" y="500" click="deletStudent()"/>

</mx:Application>

// Menu Control

1. menuControl:

2. menuBarControl:

3. PopUpMenuBarControl:

4. menu数据源的组织方式:

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<!--Menu的研究-->

<!--组织数据的方式:XML, Other objects, Collections-->

 

 

 

<!--Menu Control-->

<!--定义方式:have cascading submenus 行为方式:define,display,hide it-->

<!--(1)利用AS来实现,调用Menu类的方法实现-->

<!--

<mx:Script>

    <![CDATA[

       import mx.events.MenuEvent;

        import mx.controls.Menu;

       

        public var menuData:Array = [

             {label:"menuA",children:[{label:"A-1"},{label:"A-2"}]},

             {label:"menuB",enable:true},

             {label:"menuC",children:[

             {label:"C-1",type:"radio",toggled:false,groupName:"c"},

             {label:"C-2",type:"radio",toggled:true,groupName:"c"},

             {type:"separator"},

             {label:"C-3",type:"radio",toggled:false,groupName:"c"}]},

             {label:"menuD",children:[

             {label:"D-1",type:"check",toggled:false},

             {label:"D-2",type:"check",toggled:true}]}

             ];

       [Embed(source="/img/1.JPG")] 

       private var radioIcon:Class;

      

       [Embed(source="/img/2.JPG")]

       private var normalIcon:Class;

        

       private function createMenu():void{

          var menu:Menu = mx.controls.Menu.createMenu(null, menuData, true);

          menu.setStyle('radioIcon',radioIcon);

          menu.setStyle('normalIcon',normalIcon);

          menu.show(10,10);    

       }

      

//for PopupMenuButton /

        private function initData():void{

        Menu(pbm.popUp).selectedIndex=2;   //视为当前新创建的菜单

        }

        private function onEvent(event:MenuEvent):void{

        event.currentTarget.label="hello " + event.label;

        }

    ]]>

</mx:Script>

-->

 

 

<!--(2)利用MXML标签实现(有问题????)-->

<!---->

<mx:Script>

    <![CDATA[

        import mx.controls.Menu;

        import mx.events.MenuEvent;

       

        [Embed(source="/img/1.JPG")] 

       private var radioIcon:Class;

      

       [Embed(source="/img/2.JPG")]

       private var normalIcon:Class;

      

        private function createMenu():void{

          var menu:Menu = mx.controls.Menu.createMenu(null, menuData, true);

          menu.labelField="@label";               //显示标签

          menu.setStyle('radicon',radioIcon);

          menu.setStyle('nmaIcon',normalIcon);

          menu.iconField ="@icon";                //显示图标     

          menu.show(10,10); 

       }  

//---------------------for PopupMenuButton-------------------------

        private function initData():void{

        Menu(pbm.popUp).selectedIndex=2;   //视为当前新创建的菜单

        }

        private function onEvent(event:MenuEvent):void{

        event.currentTarget.label="hello " + event.label;

        }

       

//处理所有的菜单事件

        private function onAllMenuEvent(event:MouseEvent):void{

        text.text = event.type +" : " + event.currentTarget.label;

        }

    ]]>

</mx:Script>

 

<mx:XMLList id="menuData"> 

       <menuitem label="menuA">

          <menuitem label="A-1" enable="false"/>

          <menuitem label="A-2" icon="nmaIcon"/>

       </menuitem>

       <menuitem label="menuB">

          <menuitem label="B-1" type="radio" toggled="false" groupName="B"/>

          <menuitem label="B-2" type="radio" toggled="true" groupName="B" icon="radicon"/>

          <menuitem label="B-3" type="radio" toggled="false" groupName="B"/>

       </menuitem>    

</mx:XMLList>

<!--利用方法来实现创建菜单,加载MXML或Array对象中的信息-->

<mx:Button id="menubutton" label="open menu" click="createMenu()"

         mouseOver="onAllMenuEvent(event)"/>

 

 

 

<!--MenuBar control-->

<!--定义方式:have submenu 行为方式:-->

<mx:MenuBar id="menubar" labelField="@label" x="200">

    <mx:XMLList>

       <menuitem label="menuA">

           <menuitem label="A-1" enabled="false"/>

           <menuitem label="A-2" enabled="true"/>

           <menuitem label="A-3" enabled="false"/>

       </menuitem>

       <menuitem label="menuB">

           <menuitem label="B-1" type="radio" toggled="false"/>

           <menuitem label="B-2" type="radio" toggled="true"/>

           <menuitem label="B-3" type="radio" toggled="false"/>

       </menuitem>

       <menuitem label="menuC"/>

    </mx:XMLList>

</mx:MenuBar>

 

 

 

<!--PopUpMenuButton control-->

<!--定义方式: 行为方式 support single level menu item --> 

<mx:XML id="pbdata">

    <root>

      <editItem label="AA"/>

      <editItem label="AB"/>

      <editItem label="AC"/>

      <editItem label="AD"/>

    </root>

</mx:XML>

<mx:PopUpMenuButton id="pbm" dataProvider="{pbdata}" labelField="@label" showRoot="false"

          creationComplete="initData()" y="30" itemClick="onEvent(event)" mouseDown="onAllMenuEvent(event)"/>

         

<!--显示所有的菜单名:和类型-->

<mx:TextArea id="text" x="200" y="100"/>

</mx:Application>

转载于:https://www.cnblogs.com/zhaoxd/archive/2013/03/29/2988968.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值