11RIA 闪客社区 - 最赞 Animate Flash 论坛

搜索
查看: 2617|回复: 2
上一主题 下一主题

[Flash Player 播放器] Flash, Flex, Air, Flashplayer之间的相互关系是什么?

[复制链接] TA的其它主题
发表于 2017-12-18 14:24:38 | 显示全部楼层 |阅读模式

【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 TKCB 于 2018-10-26 08:00 编辑

转载:https://www.zhihu.com/question/20001256
来源:知乎
时间:2012年



Flash, Flex, Air, Flashplayer之间的相互关系是什么?


曾嵘 —— http://zengrong.net
66 人赞同了该回答
详见博客:http://zengrong.net/post/1295.htm

ActionScript
ActionScript通常简称为AS,它是Flash平台的语言。AS编写的程序,最终可以编译成SWF、SWC。SWF就是我们常说的Flash动画。但是现在SWF已经不仅仅是动画,而是RIA的载体。
ActionScript有3个版本,分别是1.0版(AS1),2.0版(AS2)和3.0版(AS3)。只有Flash Player 9及以上播放器才支持AS3编译的SWF。这三个版本的差别非常大,现在最流行的版本是AS3。

Flex与MXML
因为在开发RIA的时候,需要很多常用的功能,例如控件(Button,ComboBox,List……)、布局(VGroup、VBox……)等等…… Adobe就开发了一套官方的框架集来实现这些功能,这套框架集就叫做Flex。
为了方便程序员快速编写RIA程序界面,Adobe又实现了一种基于XML语法的语言MXML,这套语言很像HTML,可以与AS混用,MXML最终也是编译成SWF或SWC。 Flex框架就是使用AS3与MXML两种语言写成的。但说白了,MXML 外加实现了MXML语法,如果你有兴趣,也可以自己实现这些。 Flash和Flex,都是用AS编写,使用swf体现。

Flash
现在Adobe已经将Flash其定义为一个平台(Flash Plantform),包括了Flash IDE、Flash Builder、AIR、Flash Player以及更多。但我们一般讲Flash,有两个意思,一个是指Flash动画(也就是网页上扩展名为swf的动画),另一个就是Flash IDE。
Flash(IDE)从4.0开始进入中国,前期一直在网页动画方面告诉发展,多被用来做网页小广告(让你CPU100%的罪魁祸首之一)和MV(showgood三国系列、小小系列、大学自习室……曾经风靡一时啊)。那时的“闪客”,主要是做动画,即使涉及到编程,也大多是用当时的AS1.0(后来Flash MX 2004升级为AS2.0)写一点stop、gotoAndPlay之类的东东了。Flash(IDE)发展到8.0版本以后,才开始大量用于编程,当时比较流行的就是“Flash留言本”等等。相关历史我做了一张图来表示,括号里的数字是年份。

1559a5084ca65d01cb9715754f32dd1a_hd.jpg


Flash Builder/Flex Builder
AS发展到3.0之后,由于其语法和JAVA比较像,再加上增强的性能与强类型,可以完全脱离FLA文件,使用纯文本编码,受到了许多其他程序员(尤其是JAVA程序员)的青睐。由此得以高速发展,用AS开发程序的人也越来越多。AS在视频网站、游戏行业发展迅速。但是,Flash IDE虽然是一个很好的动画制作工具,却不是一个好的开发工具。于是,Adobe又发布了Flex Builder,一个基于Eclipse的IDE,并发布了Flex SDK,后来又开源了。
有了免费的编译器,Flex得以快速发展。用Flex Builder也可以开发纯AS项目(即所有的文件都是as文件,不包含MXML,也不包含FLA)。一个真正的程序猿,应该更愿意使用这种方式吧?Flex Builder从4.0开始,被Adobe改名为Flash Builder。
Flash Builder和Flash IDE不应该放在一起比较,它们不是一类软件。如果一定要比较一下的话,那么就是Flash IDE比较偏重于设计一点,用它做动画比较方便,当然也可以用它编写AS3程序。用Flash IDE编写的程序,会有一个FLA源文件,可能还包含多个as文件。Flash Builder偏重于程序,用它可以开发MXML(也就是Flex)项目。也可以用它编写纯AS项目。用Flash Builder编写的项目,都是纯文本文件(.as或者.mxml)。 对于程序流,当然偏爱Flash Builder,而设计流比较偏爱Flash IDE。
当然,IDE并非只有Adobe官方的东西,Flash Develop就是个免费的IDE。如果你愿意,用记事本做编辑器也没什么不好(比如说zrong就正在尝试VIM),因为SDK和编译器都是免费的。

Flash Player
swf动画需要在网页上显示出来,就需要安装Flash Player。Flash Player的不同版本,其实与Flash IDE也有一定的对应关系(从上图也能看出来)。但到了AS3时代后,这个对应关系就不那么明显了。Flash Player 9是能支持AS3 的最低版本(其实前面还有一个Flash Player 8.5,只是没普及就升级到9了),后面的Flash Player 都能支持AS3了。关于Flash Player,我写过一篇有史以来关于Flash Player的最详细说明,看这个就很清楚了。

AIR
Flash Player 再强大,也是运行在浏览器中,受浏览器约束。为了摆脱浏览器,Adobe又出奇招,发布了AIR。AIR其实就是一个Runtime,你可以把它理解成JVM。有了AIR,就可以用AS3开发桌面软件,而且开发出的软件可跨平台运行(这和JAVA的一次编译,随处运行不是如出一辙么!)。目前国内的AIR应用主要集中在网站的客户端方面,例如新浪微博AIR客户端等。

SWF SWC SWZ
SWF

swf是我们见到的最多的Flash平台文件了。是的,它就是Flash平台的最终表现形式。前面说到了,无论是Flex、Flash还是纯AS3,最终编译出来的文件都是swf格式,浏览器中的Flash Player插件和独立的Flash Player,也只能“打开”swf文件进行播放。前面说到的AIR,它的本质也就是运行时+swf而已。
其实并非所有的swf都能直接播放的。swf有3种:
1.        程序SWF(application swf):可以直接在flash player中运行的swf;
2.        库SWF(library swf):swc文件中的library.swf;
3.        模块SWF(module swf):Flex Module产生的swf文件。
最终用户碰到的绝大多数都是“程序SWF”,而程序猿们碰到后面两种SWF的可能性就比较大。

SWC
SWC是一种库文件,通常用来发布非开源的类。程序猿们将源码编译成SWC文件,并发布API文档,我们就可以使用这些SWC提供的类库进行自己的开发。SWC并不是运行时共享的,而是在编译的时候直接加入了程序SWF中。最终的程序SWF可以脱离SWC运行。
SWC本质就是一个zip文档,其中包含一个library.swf文件和一个用于描述的xml文件,你可以用zip管理器打开它查看。

SWZ
你可能会发现,从TLF出现以来,Flex SDK中多了一个flashx包,这个包中的功能,就是用SWZ实现的。SWZ是在运行时共享的库,你可以将其看作一个可以放在外部的SWC。而且SWZ的共享是平台级别的(Moudle SWF的共享是浏览器级别),存在于操作系统缓存中(Module SWF的存在浏览器缓存),只要下载过一次SWZ,你的操作系统中所有用到这些SWZ中的地方(无论是IE、FF、Chrome还是AIR)都不用重新下载。
对于程序猿,这里的关于SWC和SWZ的信息肯定是不够的,所以建议看一下smithfox的swf swc swz RSLs ant,本文的这个部分也是参照它写成的。
编辑于 2012-11-10


张强张耳朵
1 人赞同了该回答
同王磊-Kenshin同学所说
Flash
有人理解为一种动画制作工具,有人理解为用FLASH制作动画的一整套技术方案,随便你怎么理解,反正就是用adobe 的flash工具做动画。

AIR
学过JAVA的话就知道了,类似J2SE,由一整套桌面开发框架和桌面运行环境构成。可以理解为用flash builder/flex敲代码写程序,写出的程序能在桌面系统上跑(windows,linux,mac,android,ios),当然所依赖的系统必须先按照AIR RUNTIME才能运行之前写的程序,而且程序的API健壮性已经比较接近 原生软件,而且跨平台性很出色。

Flash Player
运行于各种桌面系统(windows,linux,mac,android)上的浏览器插件,使得可以在浏览器中运行flash程序/动画(swf文件)。本质上来说,flash player就是解析flash字节码的虚拟机,类似JVM
编辑于 2013-05-08


尧叔
3 人赞同了该回答
以下内容摘抄自Miller(记录前端-记录成长)的博客,查看这里:http://varnow.org/?p=110   

从Adobe的产品范畴来看,Flash和Flex是面向开发人员的工具,开发人员依赖这两个工具来开发Flash应用程序。而Flash Player与AIR则是Flash的运行环境(runtimes),其中Flash Player主要用于浏览器而AIR主要用于桌面程序。   

Flash通过可视化的工具以及时间轴来构建应用程序的外观,并使用ActionScript来做功能性开发。Flex则提供给开发人员一个类库框架,包括可视化组件以及两种开发语言:MXML和ActionScript。其中MXML主要用于开发可视化的界面,而ActionScript则用于编写业务逻辑。   

补充   
英文介绍视频:http://www.riameeting.com/node/36
编辑于 2012-01-01


王磊-Kenshin —— 全栈开发者,独立开发者,Chrome 扩展 简悦 简 Tab 及 gnvm 作者
1 人赞同了该回答
Flash:
之前只是一个矢量动画制作工具的代称,也就是所谓的“闪客”。现在Flash变成了一个广泛意义上面的平台概念,即:Flash Platform

Flex:
是Adobe公司(现在是Apache基金会)基于Action Script 3.0开发的一套可视化工具包,即:Flex SDK

AIR:
Adobe Integrated Runtime,简单的理解:可以让Flash在桌面运行的一个必要运行环境(如C#之于.Net Framework一样);
AIR SDK,这点可以理解为AIR的开发者工具包;

Flash Player:
运行SWF所必需的载体,有浏览器插件版及独立桌面版。
发布于 2012-08-08


梅子酒 —— 程序员
在 flex 容器中默认存在两条轴,水平主轴(main axis) 和垂直的交叉轴(cross axis),这是默认的设置,当然你可以通过修改使垂直方向变为主轴,水平方向变为交叉轴,这个我们后面再说。
在容器中的每个单元块被称之为 flex item,每个项目占据的主轴空间为 (main size), 占据的交叉轴的空间为 (cross size)。
这里需要强调,不能先入为主认为宽度就是 main size,高度就是 cross size,这个还要取决于你主轴的方向,如果你垂直方向是主轴,那么项目的高度就是 main size。http://985.so/b4v4L
发布于 2017-02-22


TKCB:Flash是一套技术,而不是单纯的一个~~

本帖被以下淘专辑推荐:

发表于 2018-10-26 03:26:31 | 显示全部楼层
解释的很到位了!
回复

使用道具 举报

发表于 2020-7-10 11:01:20 | 显示全部楼层
不错  1!11
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)



快速回复 返回顶部 返回列表