2

我被困在一个点上,我想在 Flash AS3 中执行一系列动画。我可以使用 TweenClass 为我的电影剪辑制作动画,但不能让它们按顺序依次播放。

我想让 closeTween 在 evntInTween 完成播放后播放。

我正在使用的代码是:

import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;





BtnEvent.buttonMode = true;
BtnEvent.addEventListener(MouseEvent.ROLL_OVER, EventOver);
BtnEvent.addEventListener(MouseEvent.ROLL_OUT, EventOut);
BtnEvent.addEventListener(MouseEvent.CLICK, EventClick);


 function EventOver(event:MouseEvent) {
    event.target.gotoAndPlay(2);
}

 function EventOut(event:MouseEvent) {
    event.target.gotoAndPlay(11);
}


 function EventClick(event:MouseEvent) {
  var evntInTween:Tween = new Tween(eventzmov, "y", Strong.easeOut, 463.75, 1794.6, 3, true);


  var closetween:Tween = new Tween(closeevent, "alpha", Strong.easeOut, 0, 1, 3, true);



}
4

2 回答 2

0

我认为您应该嵌套补间,以便仅在第一个停止播放后才创建第二个补间-它fl.transitions.TweenEvent.MOTION_FINISH在结束后发送事件,因此您为按钮分配一个侦听器以收听它,不要忘记放下一次将不再需要。

function EventClick(event:MouseEvent) {
    var evntInTween:Tween = new Tween(eventzmov, "y", Strong.easeOut, 463.75, 1794.6, 3, true);
    event.target.addEventListener(TweenEvent.MOTION_FINISH,startSecondTween);
    evntInTween.start();
}
function startSecondTween(e:TweenEvent):void {
    var closetween:Tween = new Tween(closeevent, "alpha", Strong.easeOut, 0, 1, 3, true);
    event.target.removeEventListener(TweenEvent.MOTION_FINISH,startSecondTween);
    closetween.start();
}

}

于 2012-11-20T10:10:28.677 回答
0

我强烈建议切换到 greensock 的 Tweening 库 TweenLite(又名 TweenMax)。使用如下语法:

//TweenLite.to(objectToTween, timeToTween, {propertyOne:value, propertyTwo:value, onComplete: functionToCallWhenFinished});
TweenLite.to(object, 4, {y:50, alpha:0, onComplete:finishedTween, ease:Quad.easeOut});

TweenMax(TweenLite 的功能更丰富的版本)也有一个 TimeLine 类,用于在几行代码中编写复杂的动画。

https://www.greensock.com/tweenmax/

于 2012-11-20T11:52:42.293 回答