在 html5 下动画多个精灵的最快方法是啥?

Posted

技术标签:

【中文标题】在 html5 下动画多个精灵的最快方法是啥?【英文标题】:What is the fastest way of animating multiple sprites under html5?在 html5 下动画多个精灵的最快方法是什么? 【发布时间】:2011-07-20 06:01:48 【问题描述】:

我正在尝试同时为 50 个左右的精灵设置动画,使用 30 毫秒的 setInterval。

什么能提供更好的性能? 使用画布?还是使用 -webkit-transform 和 div?有没有人有任何关于为 html5 制作动画的技巧?

【问题讨论】:

好吧...while(true) 应该可以解决问题。 (笑话) 我发现这个类似问题的 quora 回答非常有用:http://www.quora.com/What-is-the-best-way-to-get-faster-frame-rates-with-HTML5-Canvas/answer/Miller-Medeiros 【参考方案1】:

对您的问题的简短回答是 Canvas 应该提供更好的性能。

这篇来自 Facebook 工程的帖子也应该有助于您了解 Canvas 速度:

http://www.facebook.com/notes/facebook-engineering/html5-games-01-speedy-sprites/491691753919

【讨论】:

【参考方案2】:

当您需要对动画进行更改时,使用 javascript 和 HTML5 画布将比 -webkit-transform 和 div 更轻松。

我个人推荐 HTML5 画布和 Javascript 以兼容(目前),因为 -webkit-transform 仅在 Webkit 浏览器上可用。

坚持人眼无法看到帧变化超过每秒 20 帧 (FPS) 的规则,0.05 秒(又名 50 毫秒)的 setInterval() 计时器可能是最好的。

我遵循 XNA 游戏框架的工作原理,所以我通常有 2 个 setInterval() 调用,1 个用于逻辑更新,另一个用于绘制画布。

【讨论】:

为什么一个更新位置而另一个绘制画布?有什么特别的原因吗? 主要是防止帧速慢。例如,进行逻辑更新可能需要很长时间,如果每次绘制时都必须计算这些逻辑更新,则 FPS 会变得非常低,因为您需要更多时间来绘制。 除非您以不同的速率更新它们,否则单独进行更新/渲染间隔没有什么意义。如果它们以相同的频率运行,您将不会从拆分它们中获得任何性能优势。

以上是关于在 html5 下动画多个精灵的最快方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

按列合并多个 csv 文件的最快方法是啥?

在Unity中使用不带动画的动画制作多个精灵

创建由多个数据框组成的多级熊猫数据框的最快方法是啥?

在一个动画剪辑中更改多个精灵

Python + requests + splinter:发出多个并发“get”请求的最快/最佳方法是啥?

从多个文件中读取大数据并在python中聚合数据的最快方法是啥?