我想编写一个转换,其中来自 State1 的所有元素围绕 Y 轴旋转,然后显示来自 State2 的元素 这在下面的虚拟代码中说明(想象一下 Label 1 是一个组)。
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<s:states>
<s:State name="State1"/>
<s:State name="State2"/>
</s:states>
<s:transitions>
<s:Transition fromState="*" toState="State2" autoReverse="true">
<s:Rotate3D target="{label2}" angleYFrom="-90" angleYTo="0" autoCenterTransform="true" duration="1000"/>
</s:Transition>
</s:transitions>
<fx:Declarations>
<s:Rotate3D id="phaseOut" target="{label1}" angleYFrom="0" angleYTo="90" autoCenterTransform="true" duration="1000" effectEnd="currentState='State2'" />
</fx:Declarations>
<s:Label id="label1" includeIn="State1" text="This is state 1" horizontalCenter="0" verticalCenter="0"/>
<s:Label id="label2" includeIn="State2" text="This is state 2" horizontalCenter="0" verticalCenter="0"/>
<s:Button label="Change" horizontalCenter="0" verticalCenter="30" click.State1="phaseOut.play()" click.State2="currentState='State1'"/>
</s:WindowedApplication>
我的第一个问题是当状态转换被调用时,来自 State1 的所有元素都已经消失了,因此我必须将转换拆分为两个 hack(请参阅“phaseOut”)这看起来真的很糟糕,因为我本质上是在重写转换机制。
Q1:是否有一种“干净”的方式来过渡不属于 State2 的元素?
第二个问题是当您恢复到状态 1 时,元素已被旋转。
Q2:动画有没有“autoReverse”之类的东西?
谢谢你的时间!