Flash vs.(Ex)Canvas vs. SVG / VML

时间:2009-11-20 05:54:45

标签: javascript html css flash canvas

如果您今天要设计一个图形密集的交互式Web应用程序(比如像Mario Bros.这样的游戏),您更喜欢三种可用技术中的哪一种 - Flash,(Ex)Canvas或SVG / VML?

您会考虑哪些参数以及如何对每个参数评估这些技术?我能想到以下几点:

a)渲染速度 b)多功能性(单独的DOM支持等) c)浏览器支持(当前和预期) d)开发者社区支持

7 个答案:

答案 0 :(得分:7)

<强>更新

随着Web Audio API的出现,以及像Howler.JS这样的库,我宣布,用iOS6及更高版本的声音制作出色的html5 / canvas游戏,以及大量基于闪存的声音后备你工作得很好,你知道谁的浏览器。

原始回答: 今天Flash,明天画布。 Canvas看起来很有前途,并且有一些令人印象深刻的演示。在Chrome中,Canvas的性能与闪存相当,因此您可以制作竞争非常好的游戏。 (免责声明,我专业参与创建基于javascript / dom的游戏和程序)

但是你还应该选择flash的主要原因是什么?声音。声音的原生浏览器apis太可悲了。您可以使用soundmanager2(包装flash api和隐藏的flash电影,在javascript api中),但其功能受到flash / javascript桥接器延迟的限制。

新浏览器中的音频标签支持应该取得一些进展,但提出的建议与闪存的音频功能竞争力不强。

然而,给它大约2或3年,我愿意打赌这个选择看起来不太明显。

然而,如果你不介意制作一个静音游戏,或者光滑的声音不是很重要,你不介意它在IE中慢慢的狗,那么就去画布。

Silverlight甚至没有在奔跑,也不会让我发笑。

答案 1 :(得分:5)

使用Flash,因为所有浏览器都支持它。

SVG是一种标准,但只有三个用户代理供应商支持它超过规范的40%。 Opera支持它超过90%,Adobe支持它超过80%,但现在可能比去年更好地支持它,并且Safari支持它超过40%但不支持与前两个提到的组相比的方式。规范太长,因此正确实施成本很高,这与HTML5预计需要10年才能实现的原因相同。 Canvas是HTML5的一部分,HTML5尚未成为标准,可能会在没有任何警告的情况下进行更改。

除了支持之外,我希望Flash能够成为这些技术中效率最高的丰富程序化体验。如果SVG得到更广泛的支持,我会推荐它用于所有不依赖于丰富编程的基于矢量的交互式媒体,因为它的维护和扩展成本最低。

答案 2 :(得分:3)

Flash :因为这正是Flash的用途。

  • Flash网站like these可在具有正常配置的系统中顺利运行。
  • 我不太了解其他两个的多功能性,但闪存有lot of APIs
  • 浏览器支持:Flash具有非常好的渗透率(根据Adobe>> 90%)。我认为很多浏览器(除了FF 3.5)都不支持SVG或Canvas标签。
  • Flash是一个成熟的平台,有一个strong developer support

答案 3 :(得分:2)

不要忽视Silverlight。它的功能与闪存相当,在某些领域甚至超过Flash的功能和性能。它的分布不如Flash播放器,但市场份额一直在增​​加。

对于游戏我仍然可以说使用闪存,但对于丰富的应用程序,我更愿意使用Silverlight构建。嘿......你总是可以在两者之间混合。查看集成HTML,Flash和Silverlight的新Sherlock Holmes网站(适用于PhotoSynth元素)。

答案 4 :(得分:1)

目前,为了您的目的,我建议您使用Flash。正如大家已经说过的那样,很多人已经安装并运行它,它在绝大多数个人计算机上运行良好,并且具有良好的媒体处理和图形支持。

但是,使用canvas标签或SVG具有日益增长的独特优势。首先,从硬件的角度来看,这两种技术都比Flash 更广泛兼容。尽管Flash在PC和Mac上运行良好,但它在Linux上运行效果不佳,并且它根本无法运行 在大多数智能手机上。如果您使用正确的浏览器,基于Canvas和SVG的应用程序将在大多数现代智能手机和每台基于x86的现代计算机上运行。如果您让用户安装Google Chrome浏览器内嵌框架,则可以在IE中使用它们。

其次,Flash是一个专有平台;因此,它具有有限寿命。在Flash中编写应用程序是对Adobe及其平台的承诺。您实际上是在说“我相信Adobe会继续维护Flash平台,同时保持与我的应用程序的兼容性。” SVG和Javascript是标准;一个建立在SVG上的应用程序可能会在一段时间内保持可访问状态。

总之,Flash对于图形密集型任务AFAIK仍然更好,但是应该考虑使用SVG和/或画布。

答案 5 :(得分:1)

代码保护怎么样?使用Canvas和SVG,您可以做的最好的事情是混淆您的代码,这不是非常强大的保护。

答案 6 :(得分:0)

Flash ...

我们已经知道它适用于此,具有更广泛的浏览器支持和有很多人有使用它的经验。