以下是我想要在代码中执行的操作。 为xs的持续时间动画MC的一辆汽车。 汽车完成后,将一只狗的MC移动y秒。 依此类推...在动作行之间暂停
使用此代码,所有动画都会同时执行。
car.slideTo(200,100,1); dog.slideTo(200,100,5); blimp.slideTo(200,100,2);
...
是否可以写一个暂停功能把这些线之间? 我试过使用getTimeout,但我想避免必须将每个动画定义为单独的函数。
以下是我想要在代码中执行的操作。 为xs的持续时间动画MC的一辆汽车。 汽车完成后,将一只狗的MC移动y秒。 依此类推...在动作行之间暂停
使用此代码,所有动画都会同时执行。
car.slideTo(200,100,1); dog.slideTo(200,100,5); blimp.slideTo(200,100,2);
...
是否可以写一个暂停功能把这些线之间? 我试过使用getTimeout,但我想避免必须将每个动画定义为单独的函数。
您可以尝试使用setInterval(my_func,1000),它在1秒后调用my_func。
我强烈建议你用TweenMax http://blog.greensock.com/tweenmaxas3/
它具有所有的动画补间功能,你可以梦想,包括在代码的中间暂停。
它也非常容易使用,例如,
import gs.TweenMax;
// move the movieclip to (500,200) in 2 seconds:
var myTween:TweenMax = new TweenMax(mc, 2, {x:500, y:200});
,并可以暂停随时随地像
myTween.pause();
但在你的情况,你可能要排队,你的补间
所以你可以编写
import gs.*;
var tween1:TweenMax = new TweenMax(mc1, 1, {x:300,y:400});
var tween2:TweenMax = new TweenMax(mc2, 1, {x:200,y:400});
var tween3:TweenMax = new TweenMax(mc3, 1, {x:100,y:400});
var myGroup:TweenGroup = new TweenGroup([tween1, tween2, tween3]);
myGroup.align = TweenGroup.ALIGN_SEQUENCE;
而且,TweenMax & Tweensy是目前AS3中存在的最快的补间库,但Twee nMax在我看来有点容易使用,这里比较不同补间引擎http://blog.greensock.com/tweening-speed-test/
你可能想用SetInterval()。
下面是一个简单的例子,可以帮助:
var Timer = setInterval(delay, 500); //calls the function delay after 500 milliseconds
function delay() {
trace("delayed!");
clearInterval(Timer); //stops the function from being called again
}
你的问题或多或少暴露了ActionScript中是如何工作的误解。当Flash执行你的内容时,它所做的是:首先它运行所有的帧脚本,然后它将动画提前一帧,然后更新屏幕。然后它运行下一帧的所有脚本,然后再次推进动画,然后更新屏幕。
因此,如果在两行代码之间放置某种暂停功能,Flash在暂停期间将不会执行任何操作,因为它仍在尝试完成该组脚本。然后一旦暂停完成,然后 Flash将最终更新屏幕,所有三个动画将同时工作。
这看起来可能很痛苦,但getTimeout
是你应该使用的。或者,也可以使用包含特征的补间库来延迟补间的开始,例如Unreality的答案中提供的补间。在它下面是相同的事情。
不幸的是,目前没有办法做到这一点。 ActionScript是一种单线程语言,它不支持在没有回调的情况下使用定时器。然而,这个功能当然是可能的(通过称为协同例程的线程系统),并且可以在未来的语言版本中添加。
但是现在,我们被setTimeout()卡住了。
这并没有解决用户的问题。 – fenomas 2009-06-11 04:25:08
@fenomas:你不知道你在说什么。他想暂停补间动画,我向他提供图书馆来做到这一点。 – Unreality 2009-06-11 06:57:35
不,他希望一个动画在上一个动画停止时开始。无论他是否使用库或任何库来进行补间,他仍然需要回调或超时/间隔。你建议的图书馆不会让它变得更容易。 – fenomas 2009-06-12 04:56:50