哪一个更好,使用普通的HTML与JavaScript或画布?

时间:2012-05-14 11:21:24

标签: javascript html5 html html5-canvas

我最近用html5 canvas& amp;正如我所看到的,它更像是JavaScript。那么什么时候应该优先于普通的html?所有我想知道的是,鉴于我必须开发一款像pacman这样的游戏,哪一个应该更好用? (可能是绘图应用程序画布比使用div更有帮助)

例如,这里有两个pacman

的实现

我想知道使用canvas& amp;开发浏览器游戏的优点和缺点。用html div和js。另外我想知道什么时候使用canvas&什么时候使用普通的html& JS。

5 个答案:

答案 0 :(得分:3)

如果不考虑向后兼容性,请使用<canvas>,这是完全它们的设计目标。

像素数组远比为页面上的每个点创建DOM元素更有效。

答案 1 :(得分:2)

我相信使用canvas或html(dom)之类的游戏之间的一个主要区别是dom帮助你通过提供鼠标事件挂钩来管理你的对象,或者你管理他们自己在JavaScript中。

如果你在游戏中使用画布,你需要自己处理所有鼠标事件,有些库可以帮助你做到这一点,其中一个库是EaselJS。该库将帮助您轻松地在画布中向对象添加侦听器。

显然不需要在dom中拥有所有对象,如果需要任何滚动等,您将获得巨大的性能优势。以Google Maps fusion tables layers为例,他们可以使用画布在地图上渲染1000个标记并且保持良好的用户体验,这是使用dom时无法实现的。

所以关于在画布中管理对象的权衡,库和更多代码 - 但是在html(dom)中获得性能奖励或易于开发,但是对于许多对象可能会有性能命中。

答案 2 :(得分:0)

对于一个简单的2D游戏,我会采用画布方式。

对于3D游戏,您将不得不看一下WebGL(这是opengl的本机浏览器实现),并且可能是一个像copperlicht这样的webgl引擎,它将为您包装webgl api。你也可以用WebGL做2D游戏,如果你的2D游戏图形很重,webgl会比画布更快。

当然也有Flash解决方案,但我不会这样做。

编辑:理论上你也可以用画布制作3D游戏,但这意味着重新发明轮子(转换等)

答案 3 :(得分:0)

用于图形的HTML和DOM很慢,但它们可以在较旧的浏览器中使用。

Canvas非常快,但只能在现代浏览器中使用。

所以,如果您的目标群体是现代智能手机或现代浏览器,那么一定要去画布!此外,如果你需要某些特效或粒子,那么除了使用Canvas之外别无他法,因为这不能用DOM完成。

答案 4 :(得分:0)

也许SVG可能是你的选择?它不像纯html那样凌乱,它不适合游戏,但提供更好的浏览器支持。 SVG还有一个很好的框架:Raphael。我自己使用SVG进行一些游戏实现。 (风险,俄罗斯方块......)