zoukankan      html  css  js  c++  java
  • flex 状态

    [html] view plaincopyprint?

    1. <?xmlversion="1.0"encoding="utf-8"?> 
    2. <s:Applicationxmlns:fx="http://ns.adobe.com/mxml/2009" 
    3.     xmlns:s="library://ns.adobe.com/flex/spark" 
    4.     xmlns:mx="library://ns.adobe.com/flex/halo" 
    5.     width="400"height="300"> 
    6.  
    7.    <!--定义了二个状态,系统默认状态为第一个--> 
    8.     <s:states> 
    9.         <s:Statename="State1"/> 
    10.         <s:Statename="State2"/> 
    11.     </s:states> 
    12.  
    13.     <mx:VBoxverticalCenter="0" 
    14.         horizontalCenter="0"> 
    15.     
    16.         <s:Button  
    17.             <!--状态为state1时,设置label属性和单击事件--> 
    18.             label.State1="Small" 
    19.            click.State1="currentState='State2'" 
    20.  
    21.             <!--状态为state2时,设置width属性、height属性、label2属性和单击事件--> 
    22.             width.State2="200" 
    23.             height.State2="200" 
    24.             label.State2="BIG" 
    25.             click.State2="currentState='State1'"/> 
    26.             
    27.         <!--状态为state2时,该label才显示--> 
    28.         <mx:LabelincludeIn="State2" 
    29.             width="100%" 
    30.             text="State 2 Only" 
    31.             textAlign="center"/> 
    32.             
    33.     </mx:VBox> 
    34. </s:Application> 
     

    2、为一个状态设定属性,样式和事件
    在flex4里通过点语法来设定一个组件属于某个状态的属性值。例如:       <s:Button label="Default State" label.State2="New State"/>    上述的代码的意思是,这个按钮的lable值在State2状态下是New State,在其他状态下是Default State。 上述代码也可以这样写:    <s:Button >       <s:label>Default State</s:label>       <s:label.State2>new State</s:label.State2>    </s:Button> 要想在某个状态里清除某个属性的值,可以让属性值等于@clear。如下:     <Button color="0xFF0000" color.State1="@Clear"/> 对于事件也一样可以用点语法,例如:    <s:Button id="b1" label="Click Me"       click="ta1.text='hello';"       click.State1="ta1.text='goodbye'"/>

    3、添加或移除组件
    在flex4里,添加或移除某个组件,直接在这组件的属性里搞定。组件多了两个属性,includeIn和excludeFrom。includeIn, 表示这个组件要被添加到属性值所指的状态,excludeFrom,表示这个组件要从属性值所指的状态中删除,includeIn和 excludeFrom不能在同一个组件标签里出现,他们的值可以是多个状态,之间用逗号隔开。例如:
    <s:states>    <s:State name="default"/>    <s:State name="addCheckBox"/>    <s:State name="addTextInput"/>    <s:State name="addCheckBoxandButton"/> </s:states>
    <s:CheckBox id="myCB" label="Checkbox" includeIn="addCheckBox, addCheckBoxandButton"/>
    <s:TextArea text="Exclude from addTextInput" excludeFrom="addTextInput"/>
    4、更改一个组件的父元素 一个组件的父元素也能变,你信吗?不过flex4真的做到了。用的就是这个<fx:Reparent>标签。还是看段代码吧!

    1. <?xmlversion="1.0"encoding="utf-8"?> 
    2. <!-- states\NewStatesReparent.mxml --> 
    3. <s:Applicationxmlns:fx="http://ns.adobe.com/mxml/2009" 
    4.                xmlns:mx="library://ns.adobe.com/flex/halo" 
    5.                xmlns:s="library://ns.adobe.com/flex/spark"> 
    6.     <s:layout> 
    7.         <s:VerticalLayout/> 
    8.     </s:layout> 
    9.      
    10.     <s:states> 
    11.         <s:Statename="Parent1"/> 
    12.         <s:Statename="Parent2"/> 
    13.     </s:states> 
    14.      
    15.     <s:HGroup> 
    16.         <s:Panelid="Panel1" 
    17.                  height="100"width="100" 
    18.                  title="Panel 1"> 
    19.             <s:Buttonid="setCB"includeIn="Parent1"/> 
    20.         </s:Panel> 
    21.         <s:Panelid="Panel2" 
    22.                  height="100"width="100" 
    23.                  title="Panel 2"> 
    24.             <fx:Reparenttarget="setCB"includeIn="Parent2"/> 
    25.         </s:Panel> 
    26.     </s:HGroup> 
    27.      
    28.     <s:HGroup> 
    29.         <s:Buttonlabel="Parent 1" 
    30.                   click="currentState='Parent1'" 
    31.                   enabled.Parent1="false"/> 
    32.         <s:Buttonlabel="Parent 2" 
    33.                   click="currentState='Parent2'" 
    34.                   enabled.Parent2="false"/> 
    35.     </s:HGroup> 
    36. </s:Application> 
    	
    

    这句话:<fx:Reparent target="setCB" includeIn="Parent2"/>什么意思呢?target的值setCB,就是我们要换父亲的组件就是setCBsetCB是第一个panel的Button的id吧!当转换到状态Parent2时,这个Button就成了第二个Panle的子元素。因为 includeIn="Parent2"告诉我们了,在状态Parent2时,就要换了setCB的父元素,换成fx:Reparent的父元素,即第二个panel。
    5、创建状态组    在flex4里,可以给状态分组,比如第一个状态和第二个状态是一组,第三个状态和第四个状态是一组等等。我们先看怎么分组? <s:State name="default"/> <s:State name="addCheckBox" stateGroups="Group1"/> <s:State name="addTextInput"/> <s:State name="addCheckBoxandButton" stateGroups="Group1"/> 只需添加一个stateGrooups这个属性。
    添加分组的好处是什么呢?    如果一个组件在多个状态中出现,你就可以把这些状态划分到一组。那么,当出现这个族里任何一个状态时,这个组件的设置都会有效。点语法后面的值可以是组的名称,excludeFrom和includeIn的值也可以使组的名称。

    6、states简单例子

    1. <?xmlversion="1.0"?> 
    2. <s:Applicationxmlns:fx="http://ns.adobe.com/mxml/2009"  
    3.     xmlns:mx="library://ns.adobe.com/flex/halo"  
    4.     xmlns:s="library://ns.adobe.com/flex/spark"> 
    5.     <s:states> 
    6.         <!-- Define the new view states. --> 
    7.         <s:Statename="default"/> 
    8.         <s:Statename="NewButton"/> 
    9.     </s:states>     
    10.  
    11.     <s:VGroupid="g1"> 
    12.         <s:HGroup> 
    13.             <!-- Disable Button in the NewButton view state. 
    14.                  当前状态是NewButton时,b1按钮失效 
    15.               --> 
    16.             <s:Buttonid="b1"label="Click Me" 
    17.                 enabled.NewButton="false"/> 
    18.  
    19.             <!-- Add a new child control to the VBox. --> 
    20.             <!-- 状态为NewButton时,该按钮才显示 --> 
    21.             <s:Buttonid="b2"label="New Button" 
    22.                 includeIn="NewButton"/> 
    23.         </s:HGroup> 
    24.   
    25.         <s:Buttonlabel="Change to NewButton state"  
    26.             click="currentState='NewButton';"/>             
    27.  
    28.         <!-- Define Button control to switch to default view state. --> 
    29.         <s:Buttonlabel="Change to default view state"  
    30.             click="currentState='default';"/> 
    31.     </s:VGroup>     
    32. </s:Application> 
     
  • 相关阅读:
    MySQL 不同版本数据导入的问题
    利用 ps 命令查看进程的位置
    MySQL 重置 root 密码
    killall 中的 signal
    Kafka 的安装及启动
    TypeScript 中 Optional Chaining 和 Nullish Coalescing
    Redis 的使用
    TypeScript 中限制对象键名的取值范围
    React17 使用 JSX 的情况下无须再显式导入 React
    使用 golang 获取远程地址视频的时间
  • 原文地址:https://www.cnblogs.com/tiandi/p/2917490.html
Copyright © 2011-2022 走看看