2010-01-04 3 views
2

У меня есть круговой график, на котором есть 7 изображений. Он должен вращаться и останавливаться на следующем/предыдущем изображении. Он должен вращаться более чем на 50 градусов, чтобы добраться до следующего/предыдущего изображения, поэтому я добавил 360.Tween multiple filters Actionscript 3

Эта часть отлично работает. Но когда я пытаюсь добавить некоторый эффект размытия движения во время вращения, вращение иногда останавливается без завершения.

Проблема, кажется, вокруг ниже (но я разместил весь код тоже)

// animate the blur 
var myTween:Tween = new Tween(spinner, "blur", 
          Regular.easeOut, 16, 0, 1.3, true); 
myTween.addEventListener(TweenEvent.MOTION_CHANGE, applyBlur); 

// animate the rotation 
var spin:Tween = new Tween(spinner, "rotation", 
         Regular.easeOut, 0, angle, 1.5, true); 
spin.addEventListener(TweenEvent.MOTION_FINISH, hideSpinner); 

/* * * * * * * * * * * * * * * * * * * * */ // Полный код исх /* * * * * * * * * * * * * * * * * * * * */

// import blur classes 
import flash.display.Sprite; 
import flash.filters.BitmapFilter; 
import flash.filters.BitmapFilterQuality; 
import flash.filters.BlurFilter; 
import fl.transitions.TweenEvent; 
import fl.transitions.*; 
import fl.transitions.Tween; 
import fl.transitions.easing.*; 


// set up the blur filter 
var blurX:Number = 4; 
var blurY:Number = 16; 
var blur = new BlurFilter(blurX, blurY, BitmapFilterQuality.HIGH); 
var targetAngle = 0; 

//var targetAngles:Array = new Array(0,60,110,160,210,270,320); 

// Track the last sandwich viewed 
// these are the defaults to start with 
var currentSandwich:MovieClip = this.sandwich1; 
var nextSandwich:MovieClip = this.sandwich1; 

// Show/Hide the spiner 
up.addEventListener(MouseEvent.CLICK, revealSpinner); 
down.addEventListener(MouseEvent.CLICK, revealSpinner); 

function revealSpinner(event:MouseEvent):void 
{ 
    // deactivate the buttons 
    up.removeEventListener(MouseEvent.CLICK, revealSpinner); 
    down.removeEventListener(MouseEvent.CLICK, revealSpinner); 

    var angle:Number = 0; 
    // set the rotation amount depending on what arrow was clicked 
    if (event.currentTarget.name == "up"){ 
     angle = spinner.rotation + 360 + 51.42; 
    } else { 
     angle = spinner.rotation + -360 + -51.42; 
    } 
    trace(angle); 

    // animate the blur 
    var myTween:Tween = new Tween(spinner, "blur", Regular.easeOut, 16, 0, 1.3, true); 
    myTween.addEventListener(TweenEvent.MOTION_CHANGE, applyBlur); 

    // animate the rotation 
    var spin:Tween = new Tween(spinner, "rotation", Regular.easeOut, 0, angle, 1.5, true); 
    spin.addEventListener(TweenEvent.MOTION_FINISH, hideSpinner); 

} 

function hideSpinner(event:TweenEvent):void 
{ 
    // reactivate the buttons 
    up.addEventListener(MouseEvent.CLICK, revealSpinner); 
    down.addEventListener(MouseEvent.CLICK, revealSpinner); 

    // stop the listeners 
    spinner.removeEventListener(TweenEvent.MOTION_FINISH, hideSpinner); 
    spinner.removeEventListener(TweenEvent.MOTION_CHANGE, applyBlur); 

    spinner.filters = []; 
    //spinner.rotation = targetAngle; 
} 

function applyBlur(event:TweenEvent):void 
{ 
    spinner.filters = [new BlurFilter(spinner.blur, spinner.blur, 1)]; 
} 

ответ

1

Greensock Tweening Platform (ранее TweenLite/TweenMax) - отличная библиотека для tweening. У меня никогда не было проблем с настройкой сложных твинов.

Смежные вопросы