我最近用html5 canvas& amp;正如我所看到的,它更像是JavaScript。那么什么时候应该优先于普通的html?所有我想知道的是,鉴于我必须开发一款像pacman这样的游戏,哪一个应该更好用? (可能是绘图应用程序画布比使用div更有帮助)
例如,这里有两个pacman
的实现我想知道使用canvas& amp;开发浏览器游戏的优点和缺点。用html div和js。另外我想知道什么时候使用canvas&什么时候使用普通的html& JS。
答案 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进行一些游戏实现。 (风险,俄罗斯方块......)