0

在 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>

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

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

有人有想法么?

4

1 回答 1

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

于 2010-10-12T02:35:34.920 回答