v4_11 为视图状态应用变换

本文介绍如何结合状态和效果创建动画过渡,包括控制组件在动画过程中的出现和消失时间,以及使用AddAction和RemoveAction来定义组件加入或移除动画的时机。
v4_11 Animating states with transitions  为视图状态应用变换
 
ex_10
这部分主要讲
把有关状态和效果的知识结合起来,创建状态间切换的动画过渡效果
如何创建多组件复合效果,以及控制组件在动画过程中出现和消失的时间
 
要想创建动画效果,首先需要定义一个或多个状态供切换
还需要定义这些效果的顺序以及特性
效果代码中还必须定义该效果的目标组件
 
Transition实例的fromState和toState属性中使用星号来表示任意状态
 
fade没有列出target,所以它是以Parallel所有的目标组件为targets
 
 
1.来个简单的例子
当从loginState状态变换到portalState状态时,这个动画效果就会被播放
但这里要注意Parallel 的target是employeeOfTheMonth,而这块Panel在两个状态中都存在
所以没有看出fade的效果
<s:transitions>
<s:Transition fromState="loginState" toState="portalState">
<s:Parallel target="{employeeOfTheMonth}">
<s:Fade/>
<s:Move/>
</s:Parallel>
</s:Transition>
</s:transitions>
  
 
2.控制多个组件一起同时运动
<s:transitions>
<s:Transition fromState="loginState" toState="portalState">
<s:Parallel targets="{[employeeOfTheMonth,search,cafeteriaSpecial,monthlyEvents]}">
<s:Fade/>
<s:Move target="{employeeOfTheMonth}"/>
<s:Move target="{search}"
xFrom="-166"/>
<s:Move target="{cafeteriaSpecial}"
yFrom="-329"/>
<s:Move target="{monthlyEvents}"
xFrom="833"/>
</s:Parallel>
</s:Transition>
</s:transitions>
  
 
3.让login淡出,让employeeOfTheMonth移进来
以下的代码运行时,效果有点问题
<s:transitions>
<s:Transition fromState="loginState" toState="portalState">
<s:Sequence>
<s:Parallel>
<s:Fade target="{login}"/>
<s:Move target="{employeeOfTheMonth}"/>
</s:Parallel>
<s:Parallel targets="{[search,cafeteriaSpecial,monthlyEvents]}">
<s:Fade/>
<s:Move target="{search}"
xFrom="-166"/>
<s:Move target="{cafeteriaSpecial}"
yFrom="-329"/>
<s:Move target="{monthlyEvents}"
xFrom="833"/>
</s:Parallel>
</s:Sequence>
</s:Transition>
</s:transitions>
  
 
4.使用AddAction效果来定义具体的目标组件应该在何时加入到动画效果中
  使用RemoveAction效果来定义目标组件何时被从动画效果中移除
  把第一个状态中有而第二个状态没有的id移除
  在进入第二个状态时,把第一个状态没有,第二个状态有的id加进来
<s:transitions>
<s:Transition fromState="loginState" toState="portalState">
<s:Sequence>
<s:Parallel>
<s:Fade target="{login}"/>
<s:Move target="{employeeOfTheMonth}"/>
</s:Parallel>
<s:RemoveAction target="{login}"/>
<s:Parallel targets="{[search,cafeteriaSpecial,monthlyEvents]}">
<s:AddAction/>
<s:Fade/>
<s:Move target="{search}"
xFrom="-166"/>
<s:Move target="{cafeteriaSpecial}"
yFrom="-329"/>
<s:Move target="{monthlyEvents}"
xFrom="833"/>
</s:Parallel>
</s:Sequence>
</s:Transition>
</s:transitions>
  
 
5.employeeOfTheMonth在move的同时调整大小,并且指定了move的开始和结束位置
<s:transitions>
<s:Transition fromState="loginState" toState="portalState">
<s:Sequence>
<s:Parallel>
<s:Fade target="{login}"/>
<s:Resize target="{employeeOfTheMonth}"
widthFrom="264" widthTo="177"/>
<s:Move target="{employeeOfTheMonth}"
xFrom="298" xTo="24"/>
</s:Parallel>
<s:RemoveAction target="{login}"/>
<s:Parallel targets="{[search,cafeteriaSpecial,monthlyEvents]}">
<s:AddAction/>
<s:Fade/>
<s:Move target="{search}"
xFrom="-166"/>
<s:Move target="{cafeteriaSpecial}"
yFrom="-329"/>
<s:Move target="{monthlyEvents}"
xFrom="833"/>
</s:Parallel>
</s:Sequence>
</s:Transition>
</s:transitions>
  
 
6.创建另一个动画过渡来设计当用户拿出应用程序时组件的动画效果
注意它removeAction和addAction的两时机,是在fade之前
search, cafeteriaSpecial, monthlyEvents fade之后就没用了,所以直接remove
login要淡入,所以在淡入之前就要add进来
<s:Transition fromState="portalState" toState="loginState">
<s:Sequence>
<s:Parallel>
<s:Fade targets="{[search, cafeteriaSpecial, monthlyEvents]}"/>
<s:Resize target="{employeeOfTheMonth}" 
widthFrom="177" widthTo="264"/>
</s:Parallel>
<s:RemoveAction targets="{[search, cafeteriaSpecial, monthlyEvents]}"/>
<s:AddAction target="{login}"/>
<s:Parallel target="{login}">
<s:Fade/>
</s:Parallel>
</s:Sequence>
</s:Transition>
 <!--WizRtf2Html Charset=0 -->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值