Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
哪一个更好,使用带javascript的纯html还是画布?_Javascript_Html_Html5 Canvas - Fatal编程技术网

哪一个更好,使用带javascript的纯html还是画布?

哪一个更好,使用带javascript的纯html还是画布?,javascript,html,html5-canvas,Javascript,Html,Html5 Canvas,我最近开始使用HTML5Canvas开发更多的东西&正如我所看到的,它更多的是JavaScript。那么,什么时候应该优先于普通html呢?我想知道的是,考虑到我必须开发一个像《吃豆人》这样的游戏,哪一个应该更好地使用?(可能用于绘图应用程序画布比使用div更有帮助) 例如,这里有两个pacman的实现 我想知道使用canvas和htmldiv以及js开发浏览器游戏的优缺点。另外,我想知道什么时候使用canvas更好,什么时候使用纯html&js更好。如果向后兼容性不是问题,请使用,这正

我最近开始使用HTML5Canvas开发更多的东西&正如我所看到的,它更多的是JavaScript。那么,什么时候应该优先于普通html呢?我想知道的是,考虑到我必须开发一个像《吃豆人》这样的游戏,哪一个应该更好地使用?(可能用于绘图应用程序画布比使用div更有帮助)

例如,这里有两个pacman的实现


我想知道使用canvas和htmldiv以及js开发浏览器游戏的优缺点。另外,我想知道什么时候使用canvas更好,什么时候使用纯html&js更好。

如果向后兼容性不是问题,请使用
,这正是它们的设计目的


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

对于一个简单的2D游戏,我会选择画布

对于3D游戏,您必须了解WebGL(它是opengl的本机浏览器实现)和可能的WebGL引擎,如copperlicht,它将为您包装WebGL api。你也可以用WebGL做2D游戏,如果你的2D游戏是图形游戏,WebGL会比画布更快

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


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

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

Canvas非常快,但只在现代浏览器中工作


所以,如果你的目标群体是现代智能手机或现代浏览器,那么一定要选择canvas!此外,如果您需要某些特殊效果或粒子,那么除了使用Canvas之外没有其他方法,因为这在DOM中是无法实现的。

我相信Canvas和html(DOM)的主要区别之一对于类似游戏的东西,dom之间的权衡是通过提供鼠标事件来连接来帮助您管理对象,或者您自己在JavaScript中管理对象

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

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


因此,在画布中管理对象需要权衡、库和更多代码,但要获得性能回报,或者html(dom)的易开发性,但许多对象可能会受到性能的影响。

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

有趣的问题!!我还需要回答这一问题&什么是向后兼容性?@gopi1410浏览器不支持HTML5画布。即使这是一个问题,也有比div像素更好的选择:(画布部分)@Esailija有趣-我从来没有想到有人病得够厉害,会尝试填充
画布
!好吧,谷歌没有使用画布解决方案,所以它甚至可以在旧浏览器上工作。是的,我知道WebGL,但这不是问题所在&显然我不想使用flash。如果唯一的选择是画布或div,答案显然是画布。谢谢,除了速度因素和向后兼容性之外,这是新的东西。:)