11.6.建立在基础State之上的State

11.6.1. 问题
我想创建一个state,继承其他state 的所有属性并重新设置某些属性。
11.6.2. 解决办法
在新state 中设置basedOn 属性。
11.6.3. 讨论
在其他states 基础上创建states 是一种方便的方式以便创建出一组层级关系的states。当一个state 基于另一个states 时,它继承了第一个state 的所有属性,新state 中任何重写的定义都被添加进来。这意味着如果一个state 定义了一个AddChild 方法,另一个基于此state 的state也有自己的AddChild 方法,原始state 的AddChild 方法仍存在于新的State 中。

基于其他State 的State 很简单:
+展开
-XML
<mx:State name="secondaryState2basedOn="primaryState">

下面的例子中,secondaryState2对象和primaryState 对象一样添加同样的子组件,同样调用SetProperty 方法。secondaryState2的SetProperty 最后被调用,所以title 将显示为Third Title,而不是Super New Title。
+展开
-XML
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxmlwidth="400"
height="500title="Initial Title">

<mx:states>
<mx:State name="primaryState">
<mx:AddChild>
<mx:VBox>
<mx:Text fontSize="18text="NEW TEXT 1"/>
<mx:Text fontSize="18text="NEW TEXT 2"/>
</mx:VBox>
</mx:AddChild>
<mx:SetProperty target="{this}name="title"
value="'Super New Title'"/>

</mx:State>
<mx:State name="secondaryState1">
<mx:AddChild>
<mx:RichTextEditor height="300width="250"/>
</mx:AddChild>
<mx:SetProperty target="{this}name="title"
value="'Lame Old Title'"/>

</mx:State>
<mx:State name="secondaryState2basedOn="primaryState">
<mx:SetProperty target="{this}name="title"
value="'Third Title'"/>

</mx:State>
</mx:states>
<mx:ComboBox dataProvider="{['primaryState', 'secondaryState1',
'secondaryState2']}
"
change="currentState=cb.selectedItem as Stringid="cb"/>

</mx:Panel>

加支付宝好友偷能量挖...


评论(0)网络
阅读(70)喜欢(0)flash/flex/fcs/AIR