Я пытаюсь создать некоторые мувиклипы с эффектом свечения, когда вы переворачиваете, и эффект свечения исчезает при RollOut. Но когда rollOut закончен, мой фоновый мувиклип, к которому я применяю фильтр (простой векторный круг 20 x 20), внезапно выглядит неровным, когда перед rollOver / rollOut он выглядел гладким, как и должно быть. Что здесь может происходить?
Я довольно новичок в AS3, поэтому пример еще не работает должным образом. Например:
* когда вы переворачиваете элемент в первый раз, он сразу показывает конечную фазу свечения вместо анимации. Я думал, что обойду это с помощью Tween.rewind () в конструкторе, но это не сработало.
* также я не уверен, находится ли addEventListener для TweenEvent.MOTION_CHANGE в правильном месте. Я попытался поместить его в конструктор, но это привело к непрерывному получению события _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 ];
}
}
}