我正计划使用 javascript 在 HTML5 中创建一个实时多人平台游戏。在网上搜索了大约 4 个小时后,我找不到关于永恒问题的最新答案:使用 DOM 渲染我的游戏会比在画布中渲染它更快吗?游戏将是整个文件。2/4 玩家将在地图上跳跃并互相射击,炸弹会爆炸。所以?会是什么。我记得我在 2 年前用 DOM 制作了一个绘图应用程序,它工作得还算顺利,但我想现在画布的速度会更好吗?感谢你们。
PS 我也想用 Dart。
我正计划使用 javascript 在 HTML5 中创建一个实时多人平台游戏。在网上搜索了大约 4 个小时后,我找不到关于永恒问题的最新答案:使用 DOM 渲染我的游戏会比在画布中渲染它更快吗?游戏将是整个文件。2/4 玩家将在地图上跳跃并互相射击,炸弹会爆炸。所以?会是什么。我记得我在 2 年前用 DOM 制作了一个绘图应用程序,它工作得还算顺利,但我想现在画布的速度会更好吗?感谢你们。
PS 我也想用 Dart。
我使用画布,并且会说做同样的事情,因为它是直接绘图模式。但是,您绝对应该确保尽可能将其强制进行硬件加速。您可以通过将<canvas>
元素的样式设置为transform:translateZ(0);
(或不同的浏览器解释,例如-webkit-transform:translateZ(0);
)来做到这一点。现在操作 DOM 可能会很慢,因为 canvas 越来越接近原生代码,尤其是使用简单的方法来获得最大的性能。
我的游戏似乎在不同的平台上表现得很好——并不是在每个平台上都普遍表现良好(旧的 Android 操作系统滞后,但它们的 JS 和浏览器渲染引擎开始时并没有那么快),但在许多平台上都很好。
画布是您所描述的游戏类型的最佳选择,但即使使用画布,某些 DOM 元素仍然非常有用,例如,询问玩家的姓名,或在游戏中创建菜单或个人资料部分。当您需要显示 DOM 元素时,您可以在画布顶部呈现具有绝对位置的 div,并在画布元素中执行所有“游戏内容”,例如绘制和动画精灵。
Canvas 是最佳选择的原因很简单。我很确定如果没有 canvas 元素,你不能或者真的很难做这样的事情: