来自Adobe Flex Transitions的有趣行为(2)

时间:2011-10-23 22:19:12

标签: flex flex4 transition transitions

无论我做什么,我的过渡都不会按预期工作。我将解释这些问题,然后将代码置于底部。

我的申请中有4个州。

goButton仅出现在"State1""State2"

State1State2几乎相同,但y的{​​{1}}属性各不相同。所以我做了一个小小的过渡,让Button来回移动。好到目前为止。

但是, goButton"State1"也可以转换为"State2"。但"State3"中没有goButton,所以我使用了"State3"<s:Fade>效果来摆脱它。

<s:RemoveAction>"State1"的转换有效确定,但从"State3""State2" 的转换不会

当我尝试拨打从"State3""State2"的转换时,"State3"闪烁/快速闪回到goButton中的位置,只有过渡到"State1"实际发生了。

这是我的"State3"

goButton

这些是相关的过渡:

<s:Button id="goButton" includeIn="State1,State2" x="319" y="212" width="33" height="33"
                  click="goButton_clickHandler()"
                  icon="@Embed('file:///C:/Users/Felipe/Downloads/1317358341_magnifier_medium.png')"
                  toolTip="go"
                  x.State2="319" y.State2="275"/>

我的猜测是Flex总是(不要问我为什么)在执行转换之前将组件移回其原始位置。 我尝试了此应用的不同版本,其中我将<s:Transition fromState="State1" toState="State3" > <s:Sequence> <s:Fade duration="700" targets="{[searchLabel,searchTextInput,inLabel,inDropDownList,goButton,addNewLessonButton]}" /> <s:RemoveAction targets="{[searchLabel,searchTextInput,inLabel,inDropDownList,goButton,addNewLessonButton]}" /> <s:AddAction targets="{[lessonsDataGrid,backButton]}" /> <s:Fade duration="700" targets="{[lessonsDataGrid,backButton]}" /> </s:Sequence> </s:Transition> <s:Transition fromState="State2" toState="State3" > <s:Sequence> <s:Fade duration="700" targets="{[searchLabel,searchTextInput,inLabel,inDropDownList,tagsLabel,tagsTextInput,goButton,addNewLessonButton]}" /> <s:RemoveAction targets="{[searchLabel,searchTextInput,inLabel,inDropDownList,tagsLabel,tagsTextInput,goButton,addNewLessonButton]}" /> <s:AddAction targets="{[lessonsDataGrid,backButton]}" /> <s:Fade duration="700" targets="{[lessonsDataGrid,backButton]}" /> </s:Sequence> </s:Transition> 的{​​{1}}和x属性设置为y中的属性然后设置goButton"State2"并猜猜会发生什么?我得到了确切的反问题!从x.State1 = something elsey.State1 = something else的转换是可以的,但从"State2""State3"的转换不起作用,因为"State1"闪烁回到其原始位置(现在它是"State3")中的位置,然后才发生过渡。

男人这让我发疯。 的 _ __ _ __ _ __ _ __ _ __ _ __ // _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ __ _ __ _ __ _ __ _ < / em> __ _ __ _ // _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _

修改

我添加了指向应用的链接&gt;&gt;&gt;&gt; HERE&lt;&lt;&lt;&lt;&lt;&lt;&lt; 您可以通过以下方式查看问题选择“选定标签”选项,然后单击“goButton”。你会看到我在说什么。查看源代码可用!!!

3 个答案:

答案 0 :(得分:2)

我认为你这太复杂了。只需为按钮设置includeIn =“state1,state3”即可。无需任何添加操作。然后创建一个将goButton设置为目标的淡入淡出过渡。 Spark褪色非常聪明,可以在没有你的帮助的情况下弄清楚如何处理这种情况。

查看http://polygeek.com/2304_flex_simple-flex-4-component-checkedunchecked了解详情。

答案 1 :(得分:2)

看起来它正在为State3中的goButton寻找x,y。如果未明确设置,则会回退到默认值。添加

x.State3="{this.x}" y.State3="{this.x}"

<s:Button id="goButton" ... />为我修好了。

答案 2 :(得分:0)

<强>&GT;&GT;&GT; LL&LT;&LT;&LT;&LT;

好的,我想我已经特别指出了这种行为,并且相信它是 BUG GLITCH

我会看看是否有人要添加任何内容,如果没有人出现,我会提交错误报告。

重现的步骤:

  • 创建一个按钮,它以两种不同的状态存在,位于不同的x,y坐标中。例如,您的按钮将具有x和y的值,您必须将其位置设置为其他状态,例如x.State2 = somethingy.State2=something

  • 现在创建从State2(如果State1是您的原始状态)到名为State3的第三个状态的转换。

  • 转换应该有一个<s:Sequence>步骤序列,最好是涉及RemoveActions和Fades,就像我上面使用的那样。