2

我最近开始使用 html5 画布进行更多开发,正如我所见,它更多的是 JavaScript。那么什么时候应该优先于纯 html 呢?我想知道的是,鉴于我必须开发一款像吃豆人这样的游戏,应该使用哪个更好?(可能对于绘图应用程序画布比使用 div 更有帮助)

例如这里有两个 pacman 的实现

我想知道用画布和 html div 和 js 开发浏览器游戏的优缺点。另外我想知道什么时候使用画布更好,什么时候使用纯 html 和 js 更好。

4

5 回答 5

3

如果不需要考虑向后兼容性,请使用 a <canvas>,这正是它们的设计目的。

像素数组比为页面上的每个点创建一个 DOM 元素要高效得多。

于 2012-05-14T11:25:14.507 回答
2

我相信将 canvas 或 html (dom) 用于游戏之类的东西之间的主要区别之一是 dom 通过提供鼠标事件来帮助您管理对象之间的权衡,或者您在 JavaScript 中管理它们你自己。

如果您将画布用于游戏,则需要自己处理所有鼠标事件,有一些库可以帮助您执行此操作,其中一个库是EaselJS。该库将帮助您轻松地将侦听器添加到画布中的对象。

显然不需要将所有对象都放在 dom 中,如果您需要任何滚动等,您将获得巨大的性能优势。以谷歌地图融合表层为例,他们可以使用画布在地图上渲染 1000 多个标记并维护很棒的用户体验,这在使用 dom 时是不可能的。

因此,这一切都是关于权衡、库和更多代码来管理画布中的对象 - 但可以获得性能奖励,或者在 html (dom) 中易于开发,但可能会影响许多对象的性能。

于 2012-05-14T11:52:37.807 回答
0

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

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

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

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

于 2012-05-14T11:28:22.207 回答
0

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

Canvas 非常快,但仅适用于现代浏览器。

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

于 2012-05-14T11:29:46.397 回答
0

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

于 2012-05-14T12:17:43.427 回答