我想我刚刚在 flex 4.5 中发现了明显的错误。
相关应用程序的链接是 here 。 查看源已启用!!
这些是过渡:
<s:states>
<s:State name="State1"/>
<s:State name="State2"/>
<s:State name="State3"/>
</s:states>
<s:transitions>
<s:Transition fromState="State1" toState="State2" autoReverse="true" >
<s:Sequence>
<s:Move duration="500" target="{goButton}"/>
<s:AddAction targets="{[tagsLabel,tagsTextInput]}"/>
<s:Fade targets="{[tagsLabel,tagsTextInput]}" duration="500" />
</s:Sequence>
</s:Transition>
<s:Transition fromState="State1" toState="State3" >
<s:Sequence>
<s:RemoveAction targets="{[searchLabel,searchTextInput,inLabel,inDropDownList]}" />
<s:Move duration="500" target="{goButton}" />
<s:AddAction target="{lessonsDataGrid}" />
</s:Sequence>
</s:Transition>
<s:Transition fromState="State2" toState="State3" >
<s:Sequence>
<s:RemoveAction targets="{[searchLabel,searchTextInput,inLabel,inDropDownList,tagsLabel,tagsTextInput]}" />
<s:Move duration="500" target="{goButton}" />
<s:AddAction target="{lessonsDataGrid}" />
</s:Sequence>
</s:Transition>
<s:Transition fromState="State3" toState="State1" >
<s:Sequence>
<s:RemoveAction target="{lessonsDataGrid}" />
<s:Move target="{goButton}" duration="500" />
<s:AddAction targets="{[searchLabel,searchTextInput,inLabel,inDropDownList]}" />
</s:Sequence>
</s:Transition>
</s:transitions>
你看我在这里与Transitions有点合作;一个转换在DropDownList
indexChangeEvent
上激活,另一个转换由放大镜clickEvent
上的Button
触发。
我面临的问题如下:
如果我点击'放大镜'Button
三次,(快速连续3次,但只需点击1次,等待过渡,再次点击,等待过渡,最后点击)然后我得到了一些有趣的行为:放大镜Button
消失了,即使我从未让它在过渡中消失;那应该消失的TextInput
没有;它在State3
中以某种方式得到卡住,这是其中Datagrid
的状态。
相信我,我在这篇文章中花了至少 4小时并重写了这些过渡,我在网上尝试了各种各样的东西,但无济于事。
希望有人能提供帮助,我不愿意接受Flex有错误。我很高兴知道这是我做错了,Flex仍然可靠。
非常感谢。
答案 0 :(得分:2)
我已经玩过一段时间了。注意到由于某种原因在更改状态时,其中一个AddItems覆盖会从Border容器中删除索引为0的元素(如果将removeFromStage事件的处理程序添加到goButton,则可以自行调试和查看)。我还在调查这个问题,但我有一个快速解决方法。只需在所有三种状态中包含goButton:includeIn =&#34; State1,State2,State3&#34;它不会消失:] 如果我找到我发布给你的原因。
希望有所帮助,
火焰