原文地址:https://blog.csdn.net/xygg0801/article/details/53323136

很好的一篇文章 博主总结了很多资料

本文和大家重点讨论一下Flex和Flash的区别和联系,Flex也继承了Flash在表示层上先天性的美感、除了视觉上的舒适感外,还天生具备方便的矢量图形、动画和媒体处理接口。虽然Flex和Flash有众多的相似点,但是不同之处仍然很多,请看本文 详细介绍。

Flex和Flash关系

 首先这里想说的是,Flash并非只是一个单纯的矢量动画创作工具,而是一个凭借脚本语言ActionScript在功能和定位上不断演变的网络应用开发工具。早在FlashMX的时候就已经成为macroemdia推广RIA战略的工具。但是毕竟Flash最初的定位是面向美工的矢量动画创作工具,并不适合传统的开发人员。于是Flex成为开发者们的首选。

Flex和Flash都以ActionScript作为其核心编程语言,并被编译成swf文件运行于Flashplayer虚拟机里。因此Flex也继承了Flash在表示层上先天性的美感、除了视觉上的舒适感外,还天生具备方便的矢量图形、动画和媒体处理接口。

虽然Flex和Flash有众多的相似点,但是不同之处仍然很多

1.尽管公用ActionScript,但是使用的库并不完全相同,更合适的说法是两者使用着两套具有极大“功能重叠”范围的库。

2.Flash偏向的是美工人员,所以更容易发挥特效处理的优势,Flex偏向开发人员,所以容易做出具有丰富交互功能的应用程序。

3.Flash只能以ActionScript脚本的形式开发(舞台被关联到一个称之为documentclass的类里),另外舞台元素也是可以绑定脚本的,不过从软件工程的角度讲不建议这样用,Flex还可以使用称作mxml的标记语言来描述应用的外观和行为,mxml中可以直接嵌入ActionScript脚本。

4.由于第三点而造成的两者市场定位不同,Flex是面向企业级的网络应用程序,Flash则面向诸如平面动画、广告设计等多媒体展示程序。

5.借助FlashLite这一移动设备上的Flashplayer,Flash可以开发移动应用,Flex则不行。

6.Flash的编程模型是基于时间轴的,Flex的则是基于窗体,虽然它运行在网页里。

运用Flash是完全可以做到flex的效果
但Flash是为了designer(设计者)设计的,界面还有flash的动画概念和程序开发人员格格不入。

Flex是为developers(开发者)设计的。为了吸引更多的jsp/asp/php等程序员,Adobe推出了Flex,用非常简单的.mxml来描述界面给jsp/asp/php程序人员使用.(x/d)html非常相似,而且mxml更加规范化、标准化。

现在Adobe Flex更名为Adobe Flash Builder
Flash, Flex, Air, Flashplayer之间的相互关系是什么?

添加评论 
分享
查看全部 4 个回答

曾嵘,http://zengrong.net
易敏恭、张成豪、知乎用户 等人赞同
详见博客: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留言本”等等。相关历史我做了一张图来表示,括号里的数字是年份。

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种:
程序SWF(application swf):可以直接在flash player中运行的swf;
库SWF(library swf):swc文件中的library.swf;
模块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,本文的这个部分也是参照它写成的。
Flash, Flex, Air, Flashplayer之间的相互关系是什么?

添加评论 
分享
查看全部 4 个回答

曾嵘,http://zengrong.net
易敏恭、张成豪、知乎用户 等人赞同
详见博客: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留言本”等等。相关历史我做了一张图来表示,括号里的数字是年份。

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种:
程序SWF(application swf):可以直接在flash player中运行的swf;
库SWF(library swf):swc文件中的library.swf;
模块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,本文的这个部分也是参照它写成的。

Flex与Flash关系揭秘

2010-08-12 12:55 everettjf csdn.net 字号:T | T
本文向大家介绍一下Flex和Flash的区别,可以说Flex和AIR可以做到的用Flash都可以做到。只不过FlexSDK和AIRruntime简化了许多工作,对开发人员更加友好。

AD:网+线下沙龙 | 移动APP模式创新:给你一个做APP的理由>>

在使用Flex的过程中,那面会遇到Flex和Flash关系问题,这里向大家介绍一下Flex与Flash的区别,Flash是一种创作工具,设计人员和开发人员可使用它来创建演示文稿、应用程序和其它允许用户交互的内容。

Flex与Flash区别

AS:ActionScript一种运行在AVM(ActionScriptVirtualMachine)上脚本语言。

Flex:

1.FlexSDK,基于Flash平台的软件开发包,FlexSDK包含了Web应用程序框架(framework)和桌面离线应用程序框架(airframework);
2.FlexBuilder,利用FlexSDK开发软件的IDE(IntegratedDevelopmentEnvironment集成开发环境)。
3.基于FlexSDK中的framework,使用FlexBuilder开发Web应用程序。

◆AIR:AdobeIntegratedRuntime

1.基于Flash平台的桌面离线应用程序运行环境。
2.基于FlexSDK中的airframework,使用FlexBuilder开发桌面离线应用程序。

FlexBuilder不仅仅可以开发Flex应用程序,也可以开发AIR应用程序。
◆AS3是用来开发这些应用程序的语言,是基础。从Flex和AIR的编译过程也可以看到这一点(简化版):

1.将MXML文件翻译成AS3文件
2.将AS3编译成abc
3.将abc及其他资源打包进SWF文件

Flash:

一种创作工具,设计人员和开发人员可使用它来创建演示文稿、应用程序和其它允许用户交互的内容。
可以说Flex和AIR可以做到的用Flash都可以做到。只不过FlexSDK和AIRruntime简化了许多工作。对开发人员更加友好。

◆mf是macromediaflash

Flash有时间线的概念,而FLEX的SDK则把时间线这个东东向开发人员隐藏了,因此采用FLEX开发项目的时候就和你用DELPHI,VB,C#那样,直接拖放控件,编写代码即可,而不是像MF那样,把东西拖放的时间线上。

理论上讲Flex能做到的Flash都能做到,Flash能做的Flex都能做。不过Flex的时间轴只有两帧,systemManager,Preloader,DownloadProgressBar等等在第一帧,其他的都在第二帧。做网页游戏因为更多的是数据的变化,所以我觉得Flex更适合些,不过FLASH9的组件和架构和FLEX的不一样,很多类库也不一样。

很久没用FLASH了,不过没记错的话
FLEX和FLASH的组件都是从继承flash.display.sprite开始写的

flash.*开头的类库,基本上FLEX和FLASH都是一样的。
而fl.*开头的是flash独有而FLEX没有的类
而mx.*开头的就是FLEX独有的类

◆因为需要开发一个稍微复杂一点的界面。在选择到底是flex还是flash方面做了一些评估测试。

1.开发的方便性和可维护性

因为团队的绝大多数成员以前是C++的Coder,所以个人倾向于用flex.flash的源文件是fla的,管理起来总没有这么方便。有点修改就要重新提交一个fla,不利于cvs的增量备份,查看那些地方有修改也挺麻烦的。

2.发布文件的大小

都使用release形式发布,并且使用RSL,类似C++中的dll。flex的空项目大小为51KB,flash基本就是几k。这个差别还是挺大的,所以如果只是做个简单的界面,还是用flash会比较好。

本文和大家重点讨论一下Flex和Flash的区别和联系,Flex也继承了Flash在表示层上先天性的美感、除了视觉上的舒适感外,还天生具备方便的矢量图形、动画和媒体处理接口。虽然Flex和Flash有众多的相似点,但是不同之处仍然很多,请看本文 详细介绍。

Flex和Flash关系

 首先这里想说的是,Flash并非只是一个单纯的矢量动画创作工具,而是一个凭借脚本语言ActionScript在功能和定位上不断演变的网络应用开发工具。早在FlashMX的时候就已经成为macroemdia推广RIA战略的工具。但是毕竟Flash最初的定位是面向美工的矢量动画创作工具,并不适合传统的开发人员。于是Flex成为开发者们的首选。

Flex和Flash都以ActionScript作为其核心编程语言,并被编译成swf文件运行于Flashplayer虚拟机里。因此Flex也继承了Flash在表示层上先天性的美感、除了视觉上的舒适感外,还天生具备方便的矢量图形、动画和媒体处理接口。

虽然Flex和Flash有众多的相似点,但是不同之处仍然很多

1.尽管公用ActionScript,但是使用的库并不完全相同,更合适的说法是两者使用着两套具有极大“功能重叠”范围的库。

2.Flash偏向的是美工人员,所以更容易发挥特效处理的优势,Flex偏向开发人员,所以容易做出具有丰富交互功能的应用程序。

3.Flash只能以ActionScript脚本的形式开发(舞台被关联到一个称之为documentclass的类里),另外舞台元素也是可以绑定脚本的,不过从软件工程的角度讲不建议这样用,Flex还可以使用称作mxml的标记语言来描述应用的外观和行为,mxml中可以直接嵌入ActionScript脚本。

4.由于第三点而造成的两者市场定位不同,Flex是面向企业级的网络应用程序,Flash则面向诸如平面动画、广告设计等多媒体展示程序。

5.借助FlashLite这一移动设备上的Flashplayer,Flash可以开发移动应用,Flex则不行。

6.Flash的编程模型是基于时间轴的,Flex的则是基于窗体,虽然它运行在网页里。

运用Flash是完全可以做到flex的效果
但Flash是为了designer(设计者)设计的,界面还有flash的动画概念和程序开发人员格格不入。

Flex是为developers(开发者)设计的。为了吸引更多的jsp/asp/php等程序员,Adobe推出了Flex,用非常简单的.mxml来描述界面给jsp/asp/php程序人员使用.(x/d)html非常相似,而且mxml更加规范化、标准化。

现在Adobe Flex更名为Adobe Flash Builder
Flash, Flex, Air, Flashplayer之间的相互关系是什么?

添加评论 
分享
查看全部 4 个回答

曾嵘,http://zengrong.net
易敏恭、张成豪、知乎用户 等人赞同
详见博客: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留言本”等等。相关历史我做了一张图来表示,括号里的数字是年份。

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种:
程序SWF(application swf):可以直接在flash player中运行的swf;
库SWF(library swf):swc文件中的library.swf;
模块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,本文的这个部分也是参照它写成的。
Flash, Flex, Air, Flashplayer之间的相互关系是什么?

添加评论 
分享
查看全部 4 个回答

曾嵘,http://zengrong.net
易敏恭、张成豪、知乎用户 等人赞同
详见博客: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留言本”等等。相关历史我做了一张图来表示,括号里的数字是年份。

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种:
程序SWF(application swf):可以直接在flash player中运行的swf;
库SWF(library swf):swc文件中的library.swf;
模块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,本文的这个部分也是参照它写成的。

Flex与Flash关系揭秘

2010-08-12 12:55 everettjf csdn.net 字号:T | T
本文向大家介绍一下Flex和Flash的区别,可以说Flex和AIR可以做到的用Flash都可以做到。只不过FlexSDK和AIRruntime简化了许多工作,对开发人员更加友好。

AD:网+线下沙龙 | 移动APP模式创新:给你一个做APP的理由>>

在使用Flex的过程中,那面会遇到Flex和Flash关系问题,这里向大家介绍一下Flex与Flash的区别,Flash是一种创作工具,设计人员和开发人员可使用它来创建演示文稿、应用程序和其它允许用户交互的内容。

Flex与Flash区别

AS:ActionScript一种运行在AVM(ActionScriptVirtualMachine)上脚本语言。

Flex:

1.FlexSDK,基于Flash平台的软件开发包,FlexSDK包含了Web应用程序框架(framework)和桌面离线应用程序框架(airframework);
2.FlexBuilder,利用FlexSDK开发软件的IDE(IntegratedDevelopmentEnvironment集成开发环境)。
3.基于FlexSDK中的framework,使用FlexBuilder开发Web应用程序。

◆AIR:AdobeIntegratedRuntime

1.基于Flash平台的桌面离线应用程序运行环境。
2.基于FlexSDK中的airframework,使用FlexBuilder开发桌面离线应用程序。

FlexBuilder不仅仅可以开发Flex应用程序,也可以开发AIR应用程序。
◆AS3是用来开发这些应用程序的语言,是基础。从Flex和AIR的编译过程也可以看到这一点(简化版):

1.将MXML文件翻译成AS3文件
2.将AS3编译成abc
3.将abc及其他资源打包进SWF文件

Flash:

一种创作工具,设计人员和开发人员可使用它来创建演示文稿、应用程序和其它允许用户交互的内容。
可以说Flex和AIR可以做到的用Flash都可以做到。只不过FlexSDK和AIRruntime简化了许多工作。对开发人员更加友好。

◆mf是macromediaflash

Flash有时间线的概念,而FLEX的SDK则把时间线这个东东向开发人员隐藏了,因此采用FLEX开发项目的时候就和你用DELPHI,VB,C#那样,直接拖放控件,编写代码即可,而不是像MF那样,把东西拖放的时间线上。

理论上讲Flex能做到的Flash都能做到,Flash能做的Flex都能做。不过Flex的时间轴只有两帧,systemManager,Preloader,DownloadProgressBar等等在第一帧,其他的都在第二帧。做网页游戏因为更多的是数据的变化,所以我觉得Flex更适合些,不过FLASH9的组件和架构和FLEX的不一样,很多类库也不一样。

很久没用FLASH了,不过没记错的话
FLEX和FLASH的组件都是从继承flash.display.sprite开始写的

flash.*开头的类库,基本上FLEX和FLASH都是一样的。
而fl.*开头的是flash独有而FLEX没有的类
而mx.*开头的就是FLEX独有的类

◆因为需要开发一个稍微复杂一点的界面。在选择到底是flex还是flash方面做了一些评估测试。

1.开发的方便性和可维护性

因为团队的绝大多数成员以前是C++的Coder,所以个人倾向于用flex.flash的源文件是fla的,管理起来总没有这么方便。有点修改就要重新提交一个fla,不利于cvs的增量备份,查看那些地方有修改也挺麻烦的。

2.发布文件的大小

都使用release形式发布,并且使用RSL,类似C++中的dll。flex的空项目大小为51KB,flash基本就是几k。这个差别还是挺大的,所以如果只是做个简单的界面,还是用flash会比较好。

--------------

Adobe Integrated Runtime (AIR) 是一个跨操作系统的运行时,利用现有的Web开发技术(Flash,Flex,HTML,JavaScript,Ajax)来构建富Internet应用程序并部署为桌面应用程。

RIA是Rich Internet Applications的缩写,译为富互联网应用程序(或富Web应用)。

flash/flex基础发展区别等相关推荐

  1. AMFPhp与Flash||Flex 的交互后——台技术区分类导航

    2010-12-03 21:07 http://bbs.9ria.com/redirect.php?tid=57798&goto=lastpost php简介及学习方法 [转载]PHP大潮将至 ...

  2. 动画与计算机技术的区别,传统动画设计与Flash动画设计的区别

    传统动画设计与Flash动画设计的区别 随着时代的发展,人们对动画的质量提出了更高的要求.下面小编为大家搜索整理了关于传统动画设计与Flash动画设计的特点比较,欢迎参考阅读,希望对大家有所帮助! 计 ...

  3. 全Flash网站和单个Flash作品制作的区别

    一.全Flash网站和单个Flash作品制作的区别 1.文件结构不同 单个Flash作品的场景.动画过程及内容都在一个文件内,而全 Flash网站的文件由若干个文件构成,并且可以随发展的需要继续扩展. ...

  4. Flash 视频蓬勃发展

    Flash 视频蓬勃发展 我最近查看了 Clio 奖* 和 Cannes Lions*-表彰广告业杰出贡献的年度奖项的获奖者.当我看到互联网类别获奖者时,有些情况使我眼前一亮: 广告并不总是广告. 许 ...

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

    Flash, Flex, Air, Flashplayer之间的相互关系是什么? 著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:曾嵘 链接:http://www.zhi ...

  6. 内存(RAM或ROM)和FLASH存储的真正区别总结

    内存(RAM或ROM)和FLASH存储的真正区别总结 1.什么是内存      什么是内存呢?在计算机的组成结构中,有一个很重要的部分,就是存储器.存储器是用来存储程序和数据的部件,对于计算机来说,有 ...

  7. 总结内存(RAM或ROM)和FLASH存储的真正区别

    本文主要向大家介绍了内存(RAM或ROM)和FLASH存储的真正区别,通过具体的分析,让大家能够了解它们,希望对大家学习内存(RAM或ROM)和FLASH存储有所帮助. 1.什么是内存 什么是内存呢? ...

  8. 浅谈 Flash/Flex/HTML5 技术选型

    在HTML5发布以前,RIA领域的技术解决方案一直相都是各展所长,并无争议.Adobe体系中,Flash做不了的事情,Flex可以做到:.Net系决策者在选用RIA解决方案时,Silverlight是 ...

  9. Flash/Flex学习笔记(51):3维旋转与透视变换(PerspectiveProjection)

    Flash/Flex学习笔记(49):3D基础 里已经介绍了3D透视的基本原理,不过如果每次都要利用象该文中那样写一堆代码,估计很多人不喜欢,事实上AS3的DisplayObject类已经内置了z坐标 ...

最新文章

  1. 发新款电池!成本降低14%,特斯拉会继续降价吗?
  2. ppt算是php的一种吗,ppt放映快捷键是什么
  3. 利用webpack和vue实现组件化
  4. guava之preconditions
  5. ubnutu18.10拔除硬盘后进行recovery mode
  6. Java 8 Lambda表达式的函数式编程– Monads
  7. python数据获取手段包括哪些_python开发应用-本地数据获取方法
  8. 学习之路/免费的图库推荐
  9. (12)Node.js核心模块fs—实现文件复制和压缩
  10. MATLAB GUI程序设计中ListBox控件在运行期间消失的原因及解决方法
  11. ListView,GridView的getView多次调用问题
  12. org.gradle.api.tasks.compile.CompileOptions.setBootClasspath
  13. IPMI 接口配置
  14. 安卓psp模拟器联机教程_安卓PSP模拟器评测:蜘蛛侠2
  15. 一个屌丝程序猿的人生(三十六)
  16. JAVA设计模式之桥接模式
  17. 华三交换机开机dhcp snooping
  18. 哪款蓝牙耳机音质好又耐用?便宜耐用的蓝牙耳机
  19. 【API接口大全】查询订单详情/物流信息/交易订单
  20. FS2712A单片机可替换松翰SN8P2711

热门文章

  1. php 每次加密结果都不一样,实用的PHP带公钥加密类分享(每次加密结果都不一样哦)...
  2. ubuntu English版下安装拼音输入法
  3. 《学成在线 》 网站制作源码及总结html+css
  4. 5G支持下,人工智能除了AI换脸,还能干什么?
  5. 树莓派存储方案_树莓派自建 NAS 云盘之——树莓派搭建网络存储盘
  6. 您的鼓励,我的动力!(CSDN 2013年度博客之星评选)
  7. 【IT-Windows】Windows命令
  8. 《GrowingIO指标体系与数据采集》读书笔记
  9. 大话数据结构笔记-图
  10. 有鼻炎的注意啦~万金不卖的秘方快收着!