發光濾鏡在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將值應用於過濾器本身而不是目標。上面的更多描述在後... –