如何在javaScript

时间:2017-02-19 19:22:17

标签: javascript jquery animation

我想知道使用setTimeOutsetInterval在javaScript中制作动画的正确方法(我的意思是动画的循环部分,在特定时间后循环)?

如果它是正确且唯一的方法,那么绿色袜子(Gsap)和其他JS动画库是否使用setTimeOutsetInterval在特定时间内制作动画?那jQuery中的animate方法呢?

更新

我正在使用GreenSock Animation Platform (Gsap)动画,它提供了非常快速和流畅的动画。我刚问这个问题,弄清楚他们如何处理动画非常流畅和快速?

正如我在问题中提到的,有一些函数,如setTimeOutsetInterval用于处理动画,还有另一个函数名称requestAnimationFrame()用于制作没有间隙的动画,与timeOut不同和间隔功能。

因此,使用这些定义,绿色袜子和velocity.js这样的快速动画库如何处理它们的动画?

谢谢。

2 个答案:

答案 0 :(得分:4)

我创建了一个移动设备,它有一些动画用于Light and Sound Mind Machine。

我使用了setTimeout但效果不佳。为了使它平滑,你必须处理一个延迟。

相反,我使用了requestAnimationFrame(),我在JavaScript中处理了FPS(每秒帧数)并执行了动画。您可以指望requestAnimationFrame为您提供所需的性能,其中settimeout或interval会有一些差距。

https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame

不要为jQuery添加动画(除非它非常简单),它很慢,而且在Android上它无法使用。

相反......使用 Velocity.js 来处理其他一些宣传。它像丝绸一样光滑。

Velocity是一个动画引擎,与jQuery的$ .animate()具有相同的API。 使用和不使用jQuery 。它的非常快,,它具有色彩动画,变换,循环,缓动,SVG支持和滚动功能。它是jQuery和CSS转换相结合的最佳选择。

http://velocityjs.org/

答案 1 :(得分:1)

如果您必须使用JavaScript,请使用requestAnimationFrame,但请考虑是否可以使用CSS3过渡而不是JavaScript来实现所需的动画。

请参阅https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame

https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions