zoukankan      html  css  js  c++  java
  • flex4里的状态(state)

    1、定义状态
    flex4里状态的定义与flex3不同,你只需在<states></states>标签内定义状态就可以了。添加子元素和设置属性之类,不在这里进行。

    如下所示:
    <s:states>
    <s:State name="State1"/>
    <s:State name="State2"/>
    <s:State name="State3"/>
    .
    .
    </s:states>

    2、改变状态
    UIComponent类定义了一个currentState属性,通过改变这个属性的值来更换状态,这个属性的默认值是定义在需在<states></states>标签内的第一个状态。

    例如:
    <s:Button id="b1" label="Change to State 1" click="currentState='State2';"/>
    <s:Button id="b2" label="Change to the default" click="currentState='State1';"/>
    当然也可以通过UIComponent类的setCurrentState方法。

    3、为一个状态设定属性,样式和事件
    这是与flex3很不同的地方。在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>

    4、添加或移除组件
    在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"/>

    5、添加子元素时的控制
    flex4在第一次换到需要这个子元素出现的状态时,创建子元素,这是默认的情况。但是,如果这个子元素的创建需要很长时间,那么用户肯定在切换状态时感到延迟,这是不好的。所以,默认的情况,可以改。通过更改itemCreationPolicy,这是组件的一个属性,它有两个值:deferred,默认值,意思是在第一次需要这个组件出现时创建; immediate,它是在程序一被启动就会创建这个子元素。一旦子元素被创建了,它就会一直存在了。

    6、创建状态组
    在flex4里,可以给状态分组,比如第一个状态和第二个状态是一组,第三个状态和第四个状态是一组等等。

    例如:
    <s:State name="default"/>
    <s:State name="addCheckBox" stateGroups="Group1"/>
    <s:State name="addTextInput"/>
    <s:State name="addCheckBoxandButton" stateGroups="Group1"/>
    只需添加一个stateGrooups这个属性。

    如果一个组件在多个状态中出现,你就可以把这些状态划分到一组。那么,当出现这个族里任何一个状态时,这个组件的设置都会有效。“点”语法后面的值可以是组的名称,excludeFrom和includeIn的值也可以使组的名称。

    7、与状态有关的事件
    下面接收4个与状态有关的事件:

    enterState:进入一个新状态后触发,触发者是state object和组件。
    exitState:一个状态将要离开时触发,触发者是state object和组件。
    currentStateChanging:在状态即将改变时触发。它被一个currentState属性值改变的组件触发。你可以利用这个事件向服务器请求即将被新状态用到的数据。
    currentStateChange:在一个状态已经完全改变了后触发。你可以利用这个事件向服务器发回一个数据,指明用户当前的状态。

  • 相关阅读:
    批处理显示系统信息与硬件信息
    批处理获取操作系统版本信息
    k2 4.6.9安装记录-够复杂了
    NAT路由器打洞原理
    function与感叹号
    leetcode 83. Remove Duplicates from Sorted List
    leetcode 53. Maximum Subarray
    leetcode 101. Symmetric Tree
    leetcode 191. Number of 1 Bits
    胜利的欲望不会给你胜利
  • 原文地址:https://www.cnblogs.com/bmate/p/1868235.html
Copyright © 2011-2022 走看看