2009-12-03 42 views
0

我試圖在rollOut和rollOut消失時使用發光效果創建一些影片剪輯。但是,當rollOut完成後,我應用過濾器的背景動畫片段(一個簡單的20 x 20矢量圓圈)突然出現鋸齒狀,在rollOver/rollOut之前它看起來應該是平滑的。這裏會發生什麼?GlowFilter和其他一些問題後,矢量形狀出現鋸齒狀

我很新的AS3,因此該示例尚未正常工作。例如:
*當您第一次翻轉該項目時,它立即顯示發光的結束階段而不是動畫。我以爲我會在構造函數中用Tween.rewind()繞開這個問題,但那並不能解決問題。 *我也不確定是否將TweenEvent.MOTION_CHANGE的addEventListener放置在正確的位置。我試圖把它放在構造函數中,但這導致事件被_onMotionChange連續接收。

對這些問題的一些幫助非常感謝。但最重要的部分是輝光濾波器消失後的鋸齒狀的圓。

這是我迄今爲止(簡稱爲例):

package 
{ 
    import flash.events.*; 
    import flash.display.*; 
    import flash.text.*; 
    import flash.utils.*; 
    import flash.filters.GlowFilter; 
    import fl.transitions.Tween; 
    import fl.transitions.TweenEvent; 
    import fl.transitions.easing.*; 

    public class ScoreListItem extends MovieClip 
    { 

     private var _glowFilter:GlowFilter; 
     private var _tweenGlowFilterBlurX:Tween; 
     private var _tweenGlowFilterBlurY:Tween; 

     public function ScoreListItem():void 
     { 

      _glowFilter = new GlowFilter(0xffffff, 1, 3, 3, 2, 1, false, false); 
      _tweenGlowFilterBlurX = new Tween(_glowFilter, 'blurX', Strong.easeIn, 1, 5, .8, true); 
      _tweenGlowFilterBlurY = new Tween(_glowFilter, 'blurY', Strong.easeIn, 1, 5, .8, true); 

      _tweenGlowFilterBlurX.rewind(); 
      _tweenGlowFilterBlurY.rewind(); 

      addEventListener(MouseEvent.ROLL_OVER, _onRollOver); 
      addEventListener(MouseEvent.ROLL_OUT, _onRollOut); 
     } 

     private function _onRollOver(event:Event) 
     { 
      trace('rollOver'); 
      _tweenGlowFilterBlurY.addEventListener(TweenEvent.MOTION_CHANGE, _onMotionChange); 
      _tweenGlowFilterBlurX.continueTo(5, 1); 
      _tweenGlowFilterBlurY.continueTo(5, 1); 
     } 

     private function _onRollOut(event:Event) 
     { 
      trace('rollOut'); 
      _tweenGlowFilterBlurY.addEventListener(TweenEvent.MOTION_CHANGE, _onMotionChange); 
      _tweenGlowFilterBlurX.continueTo(1, 1); 
      _tweenGlowFilterBlurY.continueTo(1, 1); 
     } 

     private function _onMotionChange(event:Event) 
     { 
      trace('motionChange'); 
      this.backgroundCircle.filters = [ _glowFilter ]; 
     } 

    } 
} 

回答

0

我能夠通過當它在_onRollOut通過添加TweenEvent.MOTION_FINISH的事件偵聽完成刪除過濾器簡單地解決我的問題。這樣,矢量圓形的鋸齒狀邊緣消失了,再次顯示正常。

private function _onRollOut(event:MouseEvent) 
{ 
    _tweenGlowFilterBlurY.addEventListener(TweenEvent.MOTION_FINISH, _onRollOutFinish); 
    /* etc... */ 
} 

private function _onRollOutFinish(event:TweenEvent) 
{ 
    this.label.filters = []; 
}