发光滤镜在Flex 3,你可以做一个发光效果,像这样:如何在星火
<mx:Glow id="glowImage" duration="250"
alphaFrom="0" alphaTo="1"
blurXFrom="0.0" blurXTo="3.0"
blurYFrom="0.0" blurYTo="3.0" strength="2"
color="0xcc0000" target="{this}"/>
<mx:Glow id="unglowImage" duration="250"
alphaFrom="1" alphaTo="0"
blurXFrom="3.0" blurXTo="0.0"
blurYFrom="3.0" blurYTo="0.0" strength="2"
color="0xaaaaaa" target="{this}"/>
而且MXML:
<mx:Image rollOverEffect="{glowImage}" rollOutEffect="{unglowImage}"/>
在Flex 4,我们应该使用AnimateFilter用的GlowFilter(由Adobe推荐)。下面是我想出:
<s:AnimateFilter id="glowAnimation"
target="{this}"
duration="250"
>
<s:bitmapFilter>
<s:GlowFilter color="#ff0000" strength="3" quality="3" />
</s:bitmapFilter>
<s:motionPaths>
<s:SimpleMotionPath valueFrom="0" valueTo="4" property="blurX"/>
<s:SimpleMotionPath valueFrom="0" valueTo="4" property="blurY"/>
</s:motionPaths>
</s:AnimateFilter>
而且MXML:
<mx:Image rollOverEffect="{glowAnimation}" rollOutEffect="{unglowImage}"/>
的问题是,这个动画一次,则效果被移除,其中作为MX效果应用过滤器并保持它适用。
~~~ UPDATE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
RIAStar的答案是正确的,我想补充为什么从这个视频我只是偶然的原因[1]。它描述了Animate和AnimateFilter之间的区别。 AnimateFilter是暂时的。它应用过滤器,完成后将其删除。 Animate将值永久应用于目标。
我们也应该知道,在Flex 4中不是所有的特效支持触发器。
从AnimateInstance类:
override public function startEffect():void
{
// This override removes EffectManager.effectStarted() to avoid use of
// mx_internal. New effects are not currently triggerable, so
// this should not matter
}
这意味着,我们不能依靠rollOverEffect触发绑定到它的效果。我们必须在rollOver事件中调用effect.play()。
因此,这意味着当我们用动画类,我们还需要改变这样的:使用多个相关影响这是最好的做法时
<s:Image rollOver="glowImage.play()" rollOut="unglowImage.play()"/>
注:
<s:Image rollOverEffect="{glowImage}" rollOutEffect="{unglowImage}"/>
本调用play()在它的连带效应之前调用结束()上的播放效果。
另外,请注意当使用单一效果,如在答案中,逆转它而不是结束它像glowAnimation.play(null,true)。
<s:Image rollOver="rollOverAnimation.play()" rollOut="rollOverAnimation.play(null, true)"/>
我偶然发现了这段视频。它描述了Animate和AnimateFilter之间的区别,以及为什么Animate和AnimateFilter没有。 AnimateFilter是暂时的。它应用过滤器,完成后将其删除。 Animate将值永久应用于目标。 http://tv.adobe.com/watch/codedependent/animating-filters-in-flex-4-part-ii/ –
还有一点需要记住的是,Spark并不完全支持效果触发器。为什么它与AnimateFilter一起工作可能只是因为AnimateFilter将值应用于过滤器本身而不是目标。上面的更多描述在后... –