javascript - 动画的初始滞后

标签 javascript html

I have written an animation to recreate elastic collisions between balls 。我每 >10 毫秒移动一次球。问题是,当我加载动画时,存在初始滞后。不过,我在代码的开头并没有做任何重复/密集的事情。即使我将球数减少到 5 个球之类,问题仍然存在。我用于重复的方法是否有缺陷?

function moveBalls() {
    for(j = 0; j < ball_count; j++) {
        balls[j].move();
    }

    setTimeout(moveBalls, 10);
}

这是主循环。也许这就是罪魁祸首。有没有更可靠的方法来定期运行该函数?非常感谢任何帮助。

最佳答案

是的,有一种更好的方法来运行该函数 - 这是许多 HTML5 游戏使用的方法:

Window.requestAnimationFrame()

这告诉浏览器您正在制作动画并希望尽快再次运行该功能。它将在下次绘制屏幕时运行它。

这更快,总体上可以实现更高的帧速率和性能(因为 setTimeout 不是很准确)。

文章here (MDN)。

关于javascript - 动画的初始滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35764360/

相关文章:

html - float 问题 : content jumping out of parent div

html - 如何防止按TAB后DIV滑动

html - -webkit- textarea 在垂直滚动条上丢失顶部和底部填充

javascript - 使用 Ng-Repeat 递归显示数据

javascript - 无法从 +/- 框 DOM 元素中提取 "value"属性

javascript - 鼠标悬停时的 Css 从图像变为文本

javascript - 在 AngularJS 中关闭 URL 操作

javascript - Window.close() 不适用于关闭当前选项卡

javascript - 如何将光标聚焦在 Stripe 输入元素上

javascript - 比较两个 JavaScript 字符串日期