在fx动画期间,弹性边界能见度会变弱

时间:2010-10-11 22:32:50

标签: animation flex4 bindable

在flex 4中工作

我有一个变量:

[Bindable]
public var visibility:Boolean = true;

这些影响:

<fx:Declarations>
    <mx:Fade id="fadeOut" duration="800" alphaFrom="1.0" alphaTo="0.0"/>
    <mx:Fade id="fadeIn" duration="800" alphaFrom="0.0" alphaTo="1.0"/>
</fx:Declarations>

以及以下组件:

<s:HGroup visible="{visibility}" showEffect="fadeIn" hideEffect="fadeOut">
    ...bunch of stuff...
</s:HGroup>

我将应用程序设置为在鼠标移动时使visibility = true,并在每次鼠标停止移动4秒时将其设置为false。一切都按预期工作 EXCEPT 当鼠标移动 DURING “fadeOut”的动画时(换句话说,当元素的alpha为~0.5时我移动鼠标) 。在这种情况发生之后,我需要再等待4秒再移动鼠标,然后能见度将会恢复。

我已经检查过,当动画期间鼠标移动时,“可见性”的值确实会恢复为真(甚至紧接着之后,即使它不会导致可见性返回)...所以我假设关于Flex如何在动画期间更新绑定变量和/或可见性状态,有一些特定和奇怪的东西。

有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

终于找到了有用的东西:

效果有一些功能可以帮助您处理这些情况。主要

Effect.pause()
Effect.reverse()
Effect.stop()
Effect.resume()
在Flex 4中,这些东西似乎有奇怪的行为。我尝试做fadeOut.reverse(),它实际上做了你所期望的,除了在动画结束时,对象仍然变得不可见...... bleh

调用fadeOut.stop(),由于某种原因,做了我正在寻找的,但正确的解决方案似乎是使用状态转换,autoReverse属性设置为当前淡出项。然后,当您的状态在动画中间切换回来时,Flex将优雅地处理它。

有关自动反转的状态转换的示例,请检查: http://graphics-geek.blogspot.com/2010/01/video-auto-reversing-transitions-in.html