11.1.设置State的样式和属性

11.1.1. 问题
我想为某个当前视图设置样式或属性以及在退出时移除该样式或属性。
11.1.2. 解决办法
当进入state 时用SetStyle 标记来改变任一样式并在其退出时自动回到先前样式。
11.1.3. 讨论
当进入一个state 时都可通过SetStyle 和SetProperty 标签设置任意组件的样式和属性,设置state 中的样式和属性就像是添加子节点一样,当回到初始state 时这些都将被恢复。

SetStyle 和SetProperty 标签需要一个目标属性确定在目标上设置样式或属性,根据名称和值进行设置:
+展开
-XML
<mx:SetProperty target="{this}name="heightvalue="500"/>
<mx:SetStyle target="{this}name="backgroundColorvalue="#ccccff"/>

下面的组件通过currentState 属性设置为初始state:
+展开
-XML
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxmlwidth="400height="300currentState="initialState">

State 中的任何改变都是不能撤销的,包括初始state。下面的例子代码演示如何改变组件当前state,移除上一个state 添加的内容,在新的state 中定义新组件并设置为currentState:
+展开
-XML
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxmlwidth="400"
height="300currentState="initialState">

<mx:Script>
<![CDATA[
private var i:int = 1;
private function cycleStates():void
{
switch(i){
case 0:
currentState = "initialState";
break;
case 1:
currentState = "addImg";
break;
case 2:
currentState = "changeHolderBG";
break;
}
if(i == 2){i=0;}else{i++;}
}

]]>
</mx:Script>
<mx:states>
<mx:State name="initialState"/>
<mx:State name="addImg">
<mx:SetProperty target="{this}name="height"
value="500"/>

<mx:SetStyle target="{this}name="backgroundColor"
value="#ccccff"/>

<mx:AddChild relativeTo="{mainHolder}">
<mx:Image source="../assets/image.jpg"/>
</mx:AddChild>
</mx:State>
<mx:State name="changeHolderBG">
<mx:SetProperty target="{mainHolder}name="height"
value="500"/>

<mx:SetStyle target="{this}name="backgroundColor"
value="#ffcccc"/>

<mx:SetProperty target="{mainHolder}name="alpha"
value="0.5"/>

</mx:State>
</mx:states>
<mx:Button click="cycleStates()label="change"/>
<mx:HBox id="mainHolder"/>
</mx:VBox>

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


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