没有jquery / settimeout / setinterval的Javascript动画

时间:2012-05-11 01:10:59

标签: javascript

正如标题所说..有没有可能的方法在javascript中使用最简单的动画而不使用Jquery,settimeout和setinterval。我已经研究了太久了,找不到任何东西。可能没有办法做到这一点,只是想知道。寻找跨浏览器的东西,所以CSS动画也不会工作。

4 个答案:

答案 0 :(得分:5)

现在执行大多数动画的“正确”方法是使用window.requestAnimationFrame,其行为类似于setTimeout,因为它在指定时间运行回调函数。

它优化为以60fps运行,在某些浏览器(FF)中,它将为您提供到下一次绘制之前的精确毫秒数,以便您可以非常精确地计算动画位置。

Google“requestAnimationFrame shim”,用于旧版浏览器的各种跨浏览器实现。垫片都使用setTimeout - 没有办法解决这个问题。

答案 1 :(得分:1)

不,你怎么能在没有间隔/超时的情况下做到并且能够通过浏览器进行操作?你需要一些东西来继续触发它。

答案 2 :(得分:1)

除非您在用户输入上制作动画,否则不会。如果您在用户触发鼠标移动事件或页面滚动事件时为某些内容设置动画,则它可以正常工作,但它会停止运行,并且100%依赖于触发它的用户。

答案 3 :(得分:0)

不,我认为没有办法在不使用setTimeout()setInterval()的情况下暂停javascript。

我能想到的唯一选择是让javascript等待一些事件,比如XMLHttpRequest对象响应,这太荒谬了。

如果你正在寻找一些方便的“暂停执行(x)毫秒并继续”如JavaScript中的Thread.sleep()或Unix系统上的usleep(),那就不可能了。

我记得听说过在Ruby Sketch脚本上进行计时,在Google Sketchup中运行,有人为了使用setInterval()运行一个小的JavaScript而制作一个看不见的HTML窗口的麻烦,所以他们会有一个计时机制。我想如果你花了这么长时间来运行JavaScript并仍然使用setInterval(),那么可能没有其他选择。