我对使用HTML和Javascript制作游戏很感兴趣。我想知道在HTML5和JavaScript中绘制与在HTML和JavaScript中使用图像和div相比,是否真的会更快。
以下是使用HTML和JavaScript实现的一个良好游戏示例: http://scrabb.ly/
以下是使用HTML5和JavaScript实现的一个良好游戏示例: http://htmlchess.sourceforge.net/demo/example.html
我对使用HTML和Javascript制作游戏很感兴趣。我想知道在HTML5和JavaScript中绘制与在HTML和JavaScript中使用图像和div相比,是否真的会更快。
以下是使用HTML和JavaScript实现的一个良好游戏示例: http://scrabb.ly/
以下是使用HTML5和JavaScript实现的一个良好游戏示例: http://htmlchess.sourceforge.net/demo/example.html
我对HTML绘图和Canvas绘图进行了大量测试。我可以撰写一篇关于每种绘图方法的优点的长文,但是我会给出我的一些测试结果,供您参考:
我创建了Canvas和HTML测试页面,两者都有可移动的“节点”。Canvas节点是我在Javascript中创建并跟踪的对象。HTML节点是<div>
,但也可以是<image>
或<video>
。
我向我的两个测试页面添加了10万个节点。它们的表现有很大不同:
HTML测试标签页需要非常长时间才能加载完(在稍微低于5分钟的时间内计时,Chrome第一次请求终止该页面)。Chrome任务管理器显示该标签页占用了168MB的内存。当我查看该网页时,它占用12-13%的CPU时间,在我不查看时占用0%的CPU时间。
Canvas标签页在1秒钟内加载完成,并且只占用30MB的内存。无论是否查看该网页,它的CPU时间都占用13%。
在HTML页面上拖动更加平滑,这应该是预期的,因为当前设置是在Canvas测试中每30毫秒重新绘制全部内容。Canvas还有许多优化空间(最简单的是Canvas失效,还有剪辑区域、选择性重新绘制等等,这取决于您想实现多少)。
当我不移动对象时,在HTML页面上的视频是完美流畅的。
在Canvas上,由于我关闭了绘图画布失效功能,所以视频始终很慢。当然,这还有很大的改进空间。
在Canvas中,仅绘制/加载速度比HTML快得多,并且也有更多的优化空间(例如,排除屏幕外的物体非常容易)。
这两个游戏都不需要使用HTML 5。scrabb.ly的所有操作都是基于矩形对象完成的,可以用div轻松处理;而象棋游戏甚至不使用动画效果。如果你想要开发这种类型的游戏,那么你应该根据熟悉度和兼容性来决定使用什么技术,而不是性能。