HTML5如何“替代”Flash?

142
自iPad发布以来,Flash与HTML5的问题一直是争论的焦点。有人认为HTML5有朝一日将取代Adobe Flash。
我不开发在浏览器中运行的软件,所以我的理解很有限:
- HTML是一种纯文本标记语言,通过HTTP传递到客户端浏览器。客户端浏览器根据标准规范解析标记并呈现页面(成功的程度因浏览器而异)。 - Adobe Flash是一个专有框架,用于处理音频、视频、声音和光栅/矢量图形。它需要特殊的作者工具(例如编译器)和一个自定义播放器,该播放器作为插件提供给大多数常见浏览器使用。
请问(对于这个C/C++开发者),从技术/编码角度来看,基于文本的标记语言(HTML5)如何能够被认为是多媒体框架(Flash)的替代品?
请只提供技术事实,不要提供意见性的论证。

6
请注意,HTML 已经不像你描述的那样静态了相当长一段时间。虽然 HTML5 将其提升到了一个新的水平,但是“普通”的 HTML 已经可以使用 CSS+JS 实现一些有趣的效果了。 - Joachim Sauer
1
多年来,他们一直在说这个问题,并试图“标准化”网络标准多年,但似乎没有什么改变。Flash(和Silverlight)解决了跨浏览器不兼容问题,比其他任何东西都要好。(虽然不是跨平台,但标准的跨浏览器平台肯定比没有标准平台更好。)与此同时,竞争浏览器的数量似乎正在增加,使通过供应商开发纪律(哈)进行标准化的可能性更小。像Flash或Silverlight这样的向后兼容的软件虚拟机方法只是有效。 - Manius
1
与其试图消除插件,"HTML5人"不如致力于标准化和改进插件支持,这真是遗憾。如果浏览器能够转变为一个"平台交付系统"而不是"内容交付系统",我们就可以拥有许多竞争的(对用户来说完全透明和自动安装的)Web"平台",例如Flash、Silverlight、JavaFX以及各种"传统Web" HTML渲染器。这将通过将平台置于单个"平台开发者"的控制下,立即解决所有跨浏览器和向后兼容性问题。哦,唉... - Manius
术语HTML5通常指具有HTML5 JavaScript API(包括数据库、网络、消息传递、存储)以及使用CSS和DOM操作的图形动画和效果的Web应用程序,更不用说像canvas、svg、sprites、图片转换GUI控件等技术了。 - eckes
2
一个“毫无建设性”的问题获得了137个赞……讽刺至极。 - Mike
一种新的语言和API本身无法取代Flash,因为这忽略了对作者软件的需求。OP问题的答案应该是“通过Adobe将Adobe Flash重新品牌为更通用的交互式媒体创作软件,并添加支持构建HTML5项目的功能。”,这就是Adobe Animate所发生的事情。请参阅2015年底的此博客文章:https://theblog.adobe.com/welcome-adobe-animate-cc-a-new-era-for-flash-professional/像Newgrounds这样的创意社区通过支持这一点而继续存在。 - Zyl
25个回答

85

在这个讨论的背景下,人们松散地提到HTML5时,指的是将HTML作为标记语言、CSS用于指定呈现方式以及JavaScript代码动态操作HTML和CSS的组合。

此外,HTML5不仅具有标准文本元素,还包括可以绘制2D图形的<canvas>,以及嵌入视频的<video>元素(名字就是这个意思)。

因此,在完整实现HTML5的情况下,您可以实现动态网站而无需使用Flash。例如,最近推出了Safari/Chrome用户的Youtube HTML5版本,可参见此处。另一个是使用JavaScript和HTML制作的NES模拟器。(后者并不真正涉及HTML5...它使用了<canvas>。)


2
processing.js也是canvas标签的一个有趣应用。 - Esko
您还可以使用任何数量的3D库在画布元素内呈现3D元素,具体取决于您的浏览器和操作系统。IE9的最新预览版展示了使用本地支持(我假设是DirectX,但无法确定)的情况http://ie.microsoft.com/testdrive/Performance/AsteroidBelt/Default.html。 - NateDSaint
我认为Canvas无法以任何方式取代Flash。它不是矢量动画,对于动画制作者来说也不易使用等等。除非有一种好的创作工具能够在SVG、CSS、HTML和一些JS中制作出Flash质量的动画,否则它将无法取代动画师们所使用的Flash。至于视频方面,HTML5视频标签应该是主流。 - sinni800
HTML5的全面实现,2014年5月:不同浏览器仍存在兼容性问题。 - Avatar

67

当Steve J.谈论HTML5是未来时,他并没有解释这个声明实际上是指Flash的最广泛应用,即视频。也许他有意没有解释,以便许多想在iPhone上观看Hulu的误解的最终用户会对Flash发泄他们的愤怒。这正是正在发生的事情……令人恼火,我对Steve失去了尊重。

HTML5堆栈(html、css和JS)不会直接替换Flash。我已经开发Flash内容超过10年了,我也非常擅长JS。想到使用JS完成ActionScript可以用50%的代码完成相同的任务,我感到非常痛苦。对于一些任务,如果不是不可能,就会非常困难,用JS和CSS实现。对于基本动画和类似JQuery的功能,HTML5可以作为Flash的替代选择。但是对于复杂的游戏和RIA,我并不认为这是可行的。Actionscript已经发展成为一个强大、功能齐全的语言。

另一个重要的问题是,Adobe定期更新Flash播放器以解决可能出现的任何问题。如果HTML5成为常态,并且Flash消失了,他们将如何更新/改进HTML5规范?他们不会这样做。你必须等待HTML6和所有浏览器支持它。这意味着你要等待5-10年。让我们回到1998年的好方法。不用了,我现在想坚持使用Flash。

尽管开放标准是一个值得追求的目标,但我并不认为它会像他们所说的那样实现……

我的意见。


2
在SJ的一方面,我看到了一些使用基于Flash的广告使我的强大机器变得异常缓慢的网站。这些广告显然做得很糟糕,但它们是基于Flash的。现在,在手机上,一个可以导致CPU占用率飙升到100%的广告并不好,我支持SJ的说法,即Flash是有害的。 - graham.reeds
15
ActionScript基于与JavaScript完全相同的ECMA/ISO规范。虽然有一些库可以提供有用和独特的功能(例如绑定到TCP套接字),并且它具有一些扩展的语法选项(例如命名空间、库),但我反驳了这种观点,即在ActionScript中实现实际功能比JavaScript少写“50%的代码” - 特别是对于游戏而言。我还要补充的是,JavaScriptCore、V8和V8通常比ActionScript表现更好(尽管IE的JScript仅比使用算盘的老人略快)。 - Iain Collins
8
“复杂游戏”不可行?我不认为我同意这个说法。Javascript就像其他语言一样(正如Iain指出的,与ActionScript本质上相同)。也许你想到的是API而不是语言;虽然应该选择查找许多Javascript API。通过添加渲染API(即canvas元素),我认为您将能够实现在另一个框架中可以实现的任何复杂游戏。我认为说一个“语言”无法解决某个问题是一种谬误。 - Will Baker
3
在Javascript中编写复杂的游戏是可能的,但这并不意味着我想要这样做。游戏严重依赖语言的结构特性以更好地分离系统、游戏逻辑等等。毫无疑问,Javascript缺乏结构特性(例如,使用闭包将库封装在JS对象中是一个很酷的想法,我欣赏它,但它有些笨拙)。对于API而言,除非<audio>追上<canvas>,否则我不会涉及html5/JS/canvas游戏。 - michael.bartnett
1
我支持这个观点。对于任何大于广告或网站标志的动画工具,HTML5都无法取代Flash。每个人都在抨击Flash,但如果没有它,那么有趣的网络动画在哪里呢?现在,人们已经开始将他们的Flash动画渲染成低分辨率视频,以便您可以观看像素化的视频...不用了,我宁愿拥有(更小的!)Flash文件,其中包含令人惊叹的基于矢量图形的图形,我可以将其拉伸到1080p或更大的尺寸而不会出现像素化。 - sinni800
显示剩余7条评论

38

我认为这里有些人对编程很挑剔,没有在听取别人的意见。我也是一个初学者的Flash开发者,我不希望Flash被淘汰,你知道为什么吗?因为创意人才可以使用Flash非常容易地开发我们脑海中的想法。一个喜欢绘画和场景设计的人并不一定喜欢编写代码。打一堆“句子”并不等于绘画和动画制作!你所说的HTML5就像是说毕加索和达利应该学习编程语言才能画画,这太荒谬了。

这就是为什么人们更喜欢Flash而不是HTML5。这并不是自私,而是承认有能力创建酷炫动画网页内容的人们宁愿能够实现自己的设想,而不是学习一项无关技能或者依赖其他人来解释。

与其嘲笑,不如你们想出一个能够与Flash相媲美的HTML5可视化环境。


6
我认为这是一个好观点。在没有等效的HTML5内容创作工具之前,它将难以被采用。当然,程序员可以使用HTML5/Javascript/CSS3做与Flash相同的事情,但艺术家不想纠缠于代码。我们需要一个至少与Adobe工具一样易于使用的基于Web的动画套件。毫无疑问,Adobe已经在开发这样的东西,以避免失去它在Web内容创作中的主导地位。 - Will Baker
6
TRiG,我不同意。问题是HTML5能否取代Flash。为了实际回答这个问题,你仍然需要考虑创作工具的可用性。 - helloworlder
3
Adobe应该做的是将画布支持从Flash IDE整合进来,也就是说,在IDE中进行所有动画制作,并输出一个HTML5标记、CSS和JS的准备好的包。与AIR一样,让人们选择输出方式。这绝对可以确保Flash IDE的长存,如果不一定能保证SWF文件的主导地位。 - Bosworth99
2
你应该尝试最近发布的Hype - alexmuller
3
由于Adobe推出了Adobe Edge,因此这个答案已经过时。 - Jorjon
显示剩余3条评论

10
从技术/编码角度来看,为什么基于文本标记语言(HTML5)的技术可以被视为多媒体框架(Flash)的替代品呢?
HTML5是“Web技术栈”的新热门名称,不仅是一个“标记语言”,它还有一种编程语言(JavaScript),就像Flash一样;一组API,作为“HTML5”努力的一部分显着扩展,并提供了绘制图形(SVG,),播放音频和视频(

3
关于Mac OS上的Flash崩溃的声明,为了补充一些额外的细节。http://daringfireball.net/2010/01/apple_adobe_flash - Jotham
9
“are processed by the browser, not by a proprietary browser plugin, which is good." 的意思是“由浏览器处理,而不是专有的浏览器插件,这很好。”。原文中提到现在有许多浏览器,在呈现网页时呈现出不同的效果,因此认为至少使用Flash有一个一致的环境可以开发。而"Open standards are also better than a single monopolist implementation."则表示:“开放标准比单一垄断实现更好。”但这并非绝对,虽然开放标准在理论上很好,但对于推进技术来说却很糟糕。就像OpenGL与DirectX一样。 - Allan
3
曾经浏览器渲染页面不同的原因是因为W3C标准在很大程度上存在解释差异,尤其是微软很差地遵循规范。开放标准比单一实现更好,但前提是它们需要被明确定义。 - James Goodwin
6
@Antony - 你误解了我的意思。我并不是说OpenGL是一项过时的技术,恰恰相反。我的意思是专有技术往往是推动技术进步的主要力量。DirectX已经超越了OpenGL,并且自那以后一直在追赶。如果没有Flash,过去10年以上我们就没有流媒体视频(例如YouTube)和复杂的交互式媒体。更重要的是,Flash将持续改进。如果没有专有技术,我们的进步将会非常缓慢。 - Allan
2
@Luka Ramishvili - 是的,但这并不意味着OpenGL在Windows上无法使用。极受欢迎的Quake 2引擎发布时就支持软件或OpenGL渲染。直到后来Half-Life发布时,他们才添加了DirectX支持。我认为只是因为微软有钱投入开发DirectX,使其发展速度更快。 - Allan
显示剩余9条评论

8
当谈及HTML5时,我们需要考虑的不仅是它本身,还有浏览器对其的完全支持。例如,HTML5中的<video>标签如果没有浏览器提供的视频播放器来实际呈现视频,那么这个标签就毫无意义(此时,希望Flash视频将不再需要)。同样的情况也适用于<audio>标签。
此外,HTML5的canvas元素(与JS结合使用)允许在浏览器中实现比以前更高级的图形。

7

如果您想了解HTML5/canvas + JavaScript的能力,可以看看这个网站,它是使用HTML5实现的Wolfenstein 3D游戏,而没有使用任何Flash(请注意,您需要使用支持canvas的浏览器,如Firefox才能看到它的运行效果)。


6
HTML5不是通过与Flash的功能一一对应来取代它,而更多的是,包括JavaScript和CSS在内的HTML5技术堆栈可以用于构建之前只有Flash才能实现的各种丰富的Web应用程序。由于HTML也有望解决Flash平台存在的一些缺点,因此HTML5未来有潜力在这个领域取代Flash。
这个讨论主要关注渲染用户端应用程序所使用的技术。它并没有涉及到作者实际创建要传递给用户的内容的难易程度。你已经提到了,Flash与一套商业工具相关联,这些工具是由Adobe专门建立和营销的,以满足丰富内容作者的需求。而针对HTML5的这样的解决方案还没有得到广泛采用。对于那些将创作视为编码的开发人员而言,这并不是一个大问题,他们不会对使用HTML5感到困难(许多人已经开始使用)。但是对于那些没有开发/编码背景的作者来说,情况可能会有所不同,对于他们来说,HTML5的可行性将极大地取决于集成的创作工具的可用性。也许在几年内,Adobe Flash工具将输出到HTML5而不是SWF...

5
这些缺乏创意的人不明白的是,HTML5/Javascript/CSS本身就很臃肿。所有这些资源都是纯文本文件,没有压缩和字节码优化,而且永远都是这样。因此,对于游戏开发者来说,把所有源代码都轻易地暴露在外是不可行的选择。Flash允许您以更紧凑的方式编译源代码,同时仍能够以紧凑的矢量图形方式创建动态内容。此外,Flash已经支持着色器、硬件加速、像素滤镜(Pixel Bender)和图层效果。直到今天,您仍然无法轻松简单地使HTML元素投下阴影。HTML5仅仅试图取代Flash作为媒体播放器,但由于Flash的流行性源于其一致性,所以这将是一个艰难的推销过程。我对CSS和Javascript的憎恨可以总结为:40%的Javascript代码用于浏览器兼容性,而CSS的实现在不同的浏览器供应商中从未保持一致。在你们解决了这个问题之前,Flash将永远不会被替换。事实上,无论您在HTML5中能做什么,我们都可以在Flash中更快、更好地完成。
我已经看过Canvas中的Wolfenstein 3D了。它是< b>劣质的,而且非常小。我们可以用更大的窗口制作一个更好的3D引擎。挑战吧?

1
很好的观点!从理论上讲,我认为大多数人都知道HTML将来会成为Flash的一个可行替代品。然而,版本5是否就是它,这就是问题所在。 HTML6 ......也许吧。但问题是,开放源标准机构在 bürokratische 复杂性方面像蜗牛一样缓慢移动,相比专有技术,显然的领导者会下定决心,然后才会发生某些事情。 - helloworlder

4

Flash不仅仅是音频/视频。最近由于其丰富的编程模型和开发高性能用户界面的能力,Flex变得非常流行。

如果HTML 5或任何东西想要变得流行,首先内置的JavaScript引擎必须更加高效。现在Flex/Flash之所以流行,是因为它们具有强大的ActionScript引擎。


4
我希望我们谈论的是如何使用HTML5替代swf和flv,而不是完全取代Flash。作为一名Flash开发人员(业余爱好者),对我来说,更注重艺术性而非脚本编程的人来说,Flash使用起来相当容易(大部分时间)。 在HTML5中,如何让卡通角色在屏幕上走动?或者像将一个圆形变形(tweening)成一个正方形这样的简单操作?我肯定不能把它们写成代码。我在编程方面并不那么聪明,无法实现这样的操作。Flash相对简单。在你喜欢的应用程序中绘制所有图形(例如我的Illustrator),然后使用ActionScript将它们拼接在一起。 我喜欢苹果和Adobe。请想出某种妥协方案。

那是一个问题,不是答案。HTML5的流行词包括SVG,其中包括声明式动画。 - hsivonen
你不会为了自己的私利而闪避吧?这是IT领域,不是汽车行业...醒醒吧。 - anon235370
1
匿名者,“自私的指控”是毫无根据的。动画制作人员“需要”像Adobe Flash IDE这样的工具——他们的工作离不开它。这并不是自私,而是能够完成自己的工作。顺便问一下,为什么你使用匿名个人资料来批评别人呢? - helloworlder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接