2009-05-30 54 views
5

我想尽可能平滑地为MoviveClips/Sprite对象制作动画。但是到目前为止,唯一可行的方法是将移动代码放入EnterFrame事件处理程序。这种方法存在一个问题:当特定机器上的帧率低于期望的帧率时,整个游戏变慢。我希望能够以一种与时间无关的方式做到这一点。ActionScript 3:流畅的编程动画

回答

12

有两种方法可以在Flash播放器中执行程序化动画。第一个你已经使用onEnterFrame指出的。但是,正如您可能已经注意到的,要获得流畅的动画,您需要提高电影的整体帧率。这样做也会增加SWF运行整个时间段的CPU负载。这不是你总想要的。

进行编程动画的另一种方式是使用计时器。在一个定时器处理程序中,可以调用一个名为updateAfterEvent的函数,该函数将更新独立于您为SWF设置的FPS的屏幕。因此,使用计时器可以让网关在Flash播放器中执行流畅的动画,而不会增加SWF的整体帧速率。

两年前,我开始为Flash创建自己的补间库(因为我对现有的补间库有任何疑惑)。我以名称Coretween发布它,此库允许您选择哪种类型的动画更喜欢每个单独的补间。在文档页面上,我给出了基于帧和基于时间的动画之间差异的example。该页面上的SWF示例运行速度为12 fps,但您可以看到,较低的圆圈补间更平滑,因为它由60 fps的计时器控制,并根据SWF帧速率更新屏幕。请记住,即使计时器在60 fps时刻滴答,实际上Flash Player将永远无法达到此帧速率。但是,它会尝试实现这种帧速率,从而导致整体动画更平滑。

不幸的是,直到现在我还没有能够发布我的库的1.0版本,但据我所知它非常稳定。欢迎您以任何您认为合适的方式使用它。我曾在许多商业作品中使用过Coretween,包括我们在澳大利亚为StGeorge银行所做的一个。

+0

太棒了!正是我需要的。我会等待接受,所以你可以得到更多upvotes :) – George 2009-05-31 00:58:05

2

这里有一些基于ActionScript动画库:

TweenMax

Tweener

他们都很好地工作,并帮助你完成你所需要的。

+0

不幸的是,因为我需要实时平滑控制我的对象。 Tweener方法,保证有时在未来对象将到达其所需的位置是“ungood”。 – George 2009-05-30 14:47:59