如果我想构建一个简单的游戏(贪吃蛇、西洋跳棋、吃豆人或其他游戏),什么是更好的方法 - SVG 还是 Canvas?
我感兴趣的事情:
易于实施(Canvas 与 SVG 的学习曲线)。例如,如果 SVG 的教程和社区支持明显减少,这对我来说至关重要。
性能(对我来说并不重要,但仍然很重要)
另外,在游戏领域,是否有 SVG 比 Canvas 更适合的特定游戏(反之亦然?)
需要大量鼠标交互且不需要太多连续动画的游戏(例如跳棋或国际象棋,或任何与此相关的棋盘游戏)更适合 SVG,因为您使用 dom 元素。考虑一个简单的按钮悬停,在 SVG 中您可以添加事件侦听器,甚至只是放置g.button:hover path {fill: blue;}
在你的 CSS 中,它就会起作用。另一方面,Canvas 需要跟踪点击区域并用 Javascript 绘制所有内容。
Snake 和 Pacman 更适合画布,您可以用键盘控制一切,并且在画布上绘画比在 SVG 中移动元素便宜。有优秀的画布游戏库,影响.js http://impactjs.com/是其中之一。
解决你的观点:
使用方便:如果您熟悉纯 javascript DOM 操作 SVG 是一件轻而易举的事。如果你是一张白纸,我会说画布更容易掌握,因为你只需在上面绘画即可。
社区支持:对于游戏画布来说,轻而易举地获胜。有一个强大的 SVG 社区,但不在游戏领域。
表现:混合的。如果您不采取一些技巧,canvas 和 SVG 都可能会很慢。例如,如果您在每一帧上重新绘制整个屏幕,则在画布中从左向右移动单个方块可能会很不稳定。如果你只是重新绘制改变的区域,那么它就平滑了。 SVG 可以顺利处理这种情况。但另一方面,如果您想同时为数千个矩形设置动画,canvas 可以顺利处理它,而如果您不将矩形包装在一个组中并移动该组,SVG 就会陷入困境。
总而言之,如果您想用 javascript 探索游戏,也许 Canvas 是更好的选择。我用 SVG 做了三款游戏,最新的一款是http://color.method.ac http://color.method.ac,但我涉足过画布,我认为它更适合游戏。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)