2009-12-03 5 views
0

rollOver에서 광선 효과를 사용하고 rollOut에서 광선 효과가 사라지는 일부 MovieClips를 만들려고합니다. 그러나 롤오버가 rollOver/rollOut 전에 부드럽게 나타난 것처럼 필터를 적용한 내 배경 무비 클립 (갑자기 20x20 벡터 원)이 갑자기 들쭉날쭉하게 보입니다. 여기서 무슨 일이있을 수 있니?GlowFilter 및 기타 문제로 인해 벡터 모양이 고르지 않게 나타납니다.

저는 AS3을 처음 접했기 때문에 예제가 제대로 작동하지 않습니다. 예를 들면 다음과 같습니다.
* 처음으로 항목을 롤오버 할 때 애니메이션 효과가 아니라 광선의 최종 단계가 즉시 표시됩니다. 나는 Tween.rewind()를 생성자에서 우회 할 것이라고 생각했지만 트릭을 수행하지는 않았다. * TweenEvent.MOTION_CHANGE에 대한 addEventListener가 올바른 위치에 있는지 여부도 확실하지 않습니다. 나는 그것을 생성자에 넣으려고했으나 _onMotionChange에 의해 계속 이벤트가 수신되었습니다.

이러한 문제에 대한 도움을 많이 주시면 감사하겠습니다. 그러나 가장 중요한 부분은 글로우 필터가 사라진 후의 들쭉날쭉 한 원입니다.

이것은 내가 지금까지 (약식 예)가 무엇을 : 나는 그것이 TweenEvent.MOTION_FINISH에 대한의 EventListener를 추가하여 _onRollOut에 완료 될 때 필터를 제거하여 단지 내 문제를 해결할 수 있었다

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

. 이렇게하면 벡터 원 모양의 들쭉날쭉 한 가장자리가 사라지고 모두 다시 정상적으로 보입니다.

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

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