在制作Flash动画时,经常需要将动画延迟一段时间再继续播放,很多人会通过插入一定数量的帧来达到延时的目的。插入帧的方法对于需要延迟的时间短的话还可以,如果时间长的话,就需要插入非常多的帧,很不方便,而且延时的精确度不高,只能以每帧的时间为单位,默认是1/12秒。

本文中,我以Flash CS3, ActionScript 2.0为例,介绍一种更为方便而又精确度高的方法。非常简单,只要在需要延时的帧的动作代码中加入以下内容就可以了:


var intID:Number;
function stopDelay() { clearInterval(intID); play(); }
intID = setInterval(stopDelay, 3000); // 参数中的3000是需要暂停的毫秒数,可以根据需要修改
stop();

以上的代码段主要应用了setInterval()这个函数,通过setInterval()可以让Flash按指定周期重复执行指定的函数。为了实现延迟,我在调用了setInterval()之后立刻停止了动画。而在指定的时间周期过去,stopDelay()第一次被调用时这时,再通过clearInterval()清除之前由setInterval设置的循环,这样stopDelay()就不会被不断的循环调用下去了。而play()使得动画继续播放。

上面的代码段是为了说明延时的原理。我已经编写了一个ActionScript类,通过这个类,在需要延时的地方,只要如下一行代码就可以了:


    Delayer.delay(this, 3000);

第一个参数是要延迟的影片剪辑(MovieClip),大多数情况下,都是this,也就是代码所在的当前影片剪辑。有的时候Flash文件中包含有层层嵌套的元件,就可以通过参数来对指定的元件进行延迟了。

第二个参数是需要延迟的毫秒数,3000便是3秒。

要在你的的Flash文件中也可以这么方便地延时,请先下载压缩包并解压缩出里面的Delayer.as文件。然后在需要使用它的Flash文件的发布设置中设置Classpath使其包含Delayer.as所在的目录。之后,再需要延时的地方只需加前面所示的一行代码就可以了。

欢迎大家试一试,发现任何问题或有更好的建议,请在本文评论区留言。

标签:,

我的相关文章:

最近阅读过此文章的网友: