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 很简单:
下面的例子中,secondaryState2对象和primaryState 对象一样添加同样的子组件,同样调用SetProperty 方法。secondaryState2的SetProperty 最后被调用,所以title 将显示为Third Title,而不是Super New Title。
我想创建一个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="secondaryState2" basedOn="primaryState">
下面的例子中,secondaryState2对象和primaryState 对象一样添加同样的子组件,同样调用SetProperty 方法。secondaryState2的SetProperty 最后被调用,所以title 将显示为Third Title,而不是Super New Title。
+展开
-XML
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" width="400"
height="500" title="Initial Title">
<mx:states>
<mx:State name="primaryState">
<mx:AddChild>
<mx:VBox>
<mx:Text fontSize="18" text="NEW TEXT 1"/>
<mx:Text fontSize="18" text="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="300" width="250"/>
</mx:AddChild>
<mx:SetProperty target="{this}" name="title"
value="'Lame Old Title'"/>
</mx:State>
<mx:State name="secondaryState2" basedOn="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 String" id="cb"/>
</mx:Panel>
height="500" title="Initial Title">
<mx:states>
<mx:State name="primaryState">
<mx:AddChild>
<mx:VBox>
<mx:Text fontSize="18" text="NEW TEXT 1"/>
<mx:Text fontSize="18" text="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="300" width="250"/>
</mx:AddChild>
<mx:SetProperty target="{this}" name="title"
value="'Lame Old Title'"/>
</mx:State>
<mx:State name="secondaryState2" basedOn="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 String" id="cb"/>
</mx:Panel>
加支付宝好友偷能量挖...