我想知道使用setTimeOut
或setInterval
在javaScript中制作动画的正确方法(我的意思是动画的循环部分,在特定时间后循环)?
如果它是正确且唯一的方法,那么绿色袜子(Gsap)和其他JS动画库是否使用setTimeOut
和setInterval
在特定时间内制作动画?那jQuery中的animate
方法呢?
更新
我正在使用GreenSock Animation Platform (Gsap)动画,它提供了非常快速和流畅的动画。我刚问这个问题,弄清楚他们如何处理动画非常流畅和快速?
正如我在问题中提到的,有一些函数,如setTimeOut
和setInterval
用于处理动画,还有另一个函数名称requestAnimationFrame()
用于制作没有间隙的动画,与timeOut不同和间隔功能。
因此,使用这些定义,绿色袜子和velocity.js这样的快速动画库如何处理它们的动画?
谢谢。
答案 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转换相结合的最佳选择。
答案 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