在actionscript的行之间暂停

在actionscript的行之间暂停,actionscript,delay,Actionscript,Delay,下面是我想在代码中做的事情。 设置汽车MC的动画,持续时间为x秒。 车辆完成后,移动狗的MC y秒。 等等 使用此代码,所有动画同时执行 car.slideTo(200,100,1); dog.slideTo(200,100,5); blimp.slideTo(200,100,2); car.slideTo(200100,1); 狗。slideTo(200100,5); 滑梯飞艇(200100,2); 是否可以编写一个暂停函数来插入这些行之间? 我尝试过使用getTimeout,但我希望避免将

下面是我想在代码中做的事情。 设置汽车MC的动画,持续时间为x秒。 车辆完成后,移动狗的MC y秒。 等等

使用此代码,所有动画同时执行

car.slideTo(200,100,1); dog.slideTo(200,100,5); blimp.slideTo(200,100,2); car.slideTo(200100,1); 狗。slideTo(200100,5); 滑梯飞艇(200100,2);

是否可以编写一个暂停函数来插入这些行之间?
我尝试过使用getTimeout,但我希望避免将每个动画定义为单独的函数。

您可以尝试使用setInterval(my_func,1000),它在1秒后调用my_func。

我强烈建议您使用TweenMax

它具有所有你能想到的动画修改功能,包括在代码中间停顿。

它也非常容易使用,例如

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中存在的速度最快的tweening库,但是TweenMax在我看来更易于使用,在这里比较不同的tweening引擎

您可能想要使用

下面是一个可能有帮助的简单示例:

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
是您应该使用的。或者,您也可以使用一个tween库,其中包含一个功能来延迟tween的开始,例如在《不真实的答案》中显示的那个。下面是同样的东西。

不幸的是,目前没有办法做到这一点。ActionScript是一种单线程语言,它不支持在没有回调的情况下使用计时器。然而,这个功能当然是可能的(通过一个称为co-routines的线程系统),并且可能会在该语言的未来版本中添加


但是现在,我们只能使用setTimeout()。

这根本不能解决用户的问题。@fenomas:你不知道你在说什么。他想暂停动画,我给他提供了一个库来完成。不,他想在上一个动画停止时启动一个动画。无论他是使用您的库还是任何库来进行tweening,他仍然需要回调或超时/间隔。你建议的图书馆并没有让它变得更容易。我的图书馆让它更容易。动画特温库具有更易于使用的超时/间隔函数。首先阅读TweenMax的api!我相信这是一个可爱的孩子,但是提问者问了一个方法来延迟他的孩子,而不做回调函数。如果TweenMax这样做了,更新你的答案,提到这一点,然后你将回答他的问题。如果提问者认为值得在文件中添加7kb或其他内容来避免定义函数,他可以这样做。阅读他的提问,他不希望动画同时执行,这就是TweenMax派上用场的原因。我的答案是解释为什么执行时暂停不会给他想要的效果。我相信你的tween库很可爱,但是不管他使用什么库,他都应该使用timeout/interval来同步tween。不,如果有更好更容易使用的库,他不应该使用timeout/interval来同步tween。TweenMax是吐温性能最好的产品之一。您编写比TweenMax性能更好的函数的可能性很小。我可以保证库的timeout/interval函数比你自己写的要有效得多。我的观点是提问者要求一种暂停AS执行的方法,所以我解释为什么这不能解决他的问题,这样他就可以更清楚地了解他的问题是什么。然后他是否想解决你图书馆的问题,由他来决定。他可能对他已经在使用的图书馆感到满意。不过,我添加了一个更新,让您感到高兴。;)谢谢你的幸福。现在,我怎样才能让你快乐最好的答案在这里,伊姆霍。没有固执己见的辩论。只需清除代码。:)