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