zoukankan      html  css  js  c++  java
  • 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>

  • 相关阅读:
    React元素渲染
    初识JSX
    微信小程序复制文本到剪切板
    微信小程序报错request:fail url not in domain list
    小程序,通过自定义编译条件,模拟推荐人功能
    积分抵扣逻辑
    微信小程序 switch 样式
    tomcat 配置开启 APR 模式
    tomcat8 传输json 报错 Invalid character found in the request target. The valid characters are defined in RFC 3986
    c++数组初始化误区
  • 原文地址:https://www.cnblogs.com/zhaoxd/p/2988968.html
Copyright © 2011-2022 走看看