本文和大家重点讨论一下Flex与Flash区别和联系,从技术角度来看,Flex和Flash是融合在一起的。但是在应用技术选型的时候,Flex和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会比较好。