现在的位置: 首页 > 综合 > 正文

Flex 4 SDK 新特性教程系列 – Flex 4概述

2013年08月20日 ⁄ 综合 ⁄ 共 3562字 ⁄ 字号 评论关闭
文章目录

这是Flex 4 SDK 新特性教程系列的第2章。本章概述了Flex 4的设计目标及核心特性,并介绍一些相关的学习资源。

 

Flex 4概述

纵观Flex的发展史,可以说是一个“由封闭开放,由商业化到社区化”的进程。早在2004年Macromedia推出Flex 1.0(准确的说应该是Flex Server 1.0)时,在大多数开发者的眼中,Flex是神秘且高不可攀的。抛开其他因素不说,单是那$25000/CPU的价格,就让人瞠目结舌(想想今天很多个人电脑都达到了4核、8核的水平,部署一套Flex Server足以让你倾家荡产了)。当然Macromedia也很快意识到了其商业战略上的失策,继而推出2.0版本时,将Flex变为纯粹的客户端技术与数据服务相结合的模式,并免费提供Flex SDK的下载,使得Flex得以“飞入寻常百姓家”,但当时的在开发者中的普及率仍然不甚理想。

2007年,Adobe在收购Macromedia后做出了一个重要的决定,将Flex SDK完整开源!现在看来,这一策略从本质上改变了Flex曲高和寡的形象。伴随着Flex 3.0的正式发布,Flex开发者阵营猛增,面向Flex设计的开源框架,类库迅速丰富,基于Flex实现的企业级应用,社区,游戏等充斥了整个互联网。可以说,现在的Flex和Flash一样,已经无处不在。同时,“最佳RIA平台”,“最佳开源RIA解决方案”等荣誉也随之而来。

那么,即将在明年上半年发布的Flex 4,对于Adobe、开发者社区乃至RIA领域来说,有着什么样的意义呢?

抛开技术方面不谈,我认为Flex 4的重要意义在于:这是Flex发展史上第一个从构建之初就开放源代码,不断吸收来自开发者、设计师的反馈而构建的平台。你可以在Flex 4的新特性里找到很多人期望得到的功能,也可以发现很多人抱怨不已的缺陷被改进。在Flex 4 Beta1发布后,由于收到大量来自社区的反馈和意见,Flex团队甚至不惜推迟Flex 4的发布时间,以便将更多来自社区的声音融入到Flex 4的正式版本中,可以说,是Adobe和Flex社区一起创建了Flex 4!

让我们回到技术层面,Flex 4在设计之初定义了三个主题:Design in Mind, Developer Productivity和Platform Evolution。

Design in Mind

尽管Flex的流行程度已经相当让人满意,对于Adobe团队来说,仍然有一些遗憾,那就是:大部分RIA应用太“Flex”了,由于很多开发者认为Flex的用户界面难以从根本上定制化或者说定制的成本太高,很多产品选择了在Flex提供的默认界面上进行一些简单样式和图素定制以提高生产效率。这样一来,作为RIA成功因素中必不可少的设计师(无论是图形设计还是体验设计)阵营,仍然难以深入整个产品的开发流程,凝聚着心血的流程和界面设计,难以被开发者100%“忠于原著”地实现。与此同时,开发者也对于设计师的“善变性”叫苦不迭,设计师“大笔一挥”修改了设计,工程师可能就需要额外付出很多精力来修改代码。这样的情况在一般的RIA开发中并不少见。基于这个原因,Flex 4的一个核心目标,就是改进设计师与开发者协作的工作流程,让设计师充分参与到产品开发过程中,将自己的创意和想法直接的表现为可以运行的应用程序和可供进一步开发的代码。而对于开发者来说,可以更加关注应用程序的数据处理和业务逻辑,减少在界面方面的工作量。为了实现这一目标,Adobe提供了“三把利器”,分别是“Spark组件模型”,“FXG”,和“Flash Catalyst”。

Spark组件模型将Flex组件中数据和逻辑处理与界面外观彻底的分离出来,使得开发者可以基于比较纯粹的MVC模型进行开发,是改进工作流程的“前提”。
FXG作为Adobe CS套件和Flash/Flex平台之间的通用交换格式,使得在程序与创意之间的“交流”更加容易,是沟通的桥梁,可以理解为是“基础设施”。
Flash Catalyst则是建立在这样的前提和基础设施上的“上层建筑”了,它可以让设计师充分表达自己的创意而完全不需要掌握任何代码,当静态的图片在设计师手中变成了可以运行,可交互的应用程序原型,整个产品的工作流也将真正的“无缝”化。

Developer Productivity

Flex的一大优势就在于其出色的开发效率,或者说是“开发者生产力”。提高生产力可以减少成本,降低风险,对于一个团队乃至企业都是至关重要的。在Flex 4中,有很多帮助提升生产力的特性,其中我最想提及的莫过于全新的视图状态(View States)语法了。在Flex 3的时代,老实说,我从来没有使用过的视图状态,甚至我看到我的团队里有工程师使用它我也要建议他改用ActionScript,因为我认为它的语法实在有点“恶心”。MXML的一大优势就是其清晰的结构和可读性,而在Flex 3中使用视图状态会让你的MXML页面结构“即不清晰,也不可读”,给人的感觉像是在用MXML去写AS代码,那我宁可选择直接去写AS,至少可以更容易看懂。在Flex 4中,这一缺陷得到了根本性的改善,你可以使用最熟悉的“点语法”来定义与状态有关的属性,样式和事件。我有理由相信,使用Flex 4开发项目时,视图状态将成为最常用,最好用的特性之一。除此以外,你还会发现许许多多的特性都能进一步提高你的开发效率,包括:

  • 双向数据绑定 - 简单的一个“@”标记来实现数据绑定的双向性。
  • 高级CSS Selector - 引入了更多CSS标准中的Selector规则,包括id selector, descendant selector还有视图状态的selector。
  • 全新的特效组件 - 全新的特效组件集合,并增加了像“Transition.autoReverse”(状态切换时自动播放反转效果)这样贴心的功能。
  • 新的容器布局模型 - 实现容器布局的定制化将比以前更容易,并且可以充分地在不同组件中复用布局算法
  • 编译器效率提升 - 据统计,Flex 4编译器的编译效率将比以前提升百分之XX…现在还不能确定具体提升多少,但可以肯定的是,这是Flex SDK团队工作的重点之一。

Platform Evolution

Flex始终是伴随着Flash平台(Flash/AIR)而进化的。Flex 3正式发布之时,Flash平台仍处于Flash Player 9的时代,因此并不具备Flash Player 10的特性。因此,Flex 4就必需能够体现并利用FP 10所带来的革新。其中最显著,最令人兴奋的莫过于3D相关的特性,在Flex 4中,创建基于3D的布局3D动画效果将是一件非常容易的事情。另一方面,FP 10新的文本引擎(FTE)和基于此的文字布局框架(TLF)使得一直以来为人所诟病的Flash文本处理能力得到了根本性的提升,而Flex 4中的Spark文本组件将全部基于FTE/TLF。例如,你可以使用一个简单的属性让本文进行多列显示,或者横跨多个容器进行文字排版。此外,Pixel Bender的功能也被集成到Flex 4中。

以上,只是我对Flex 4的部分新特性的简单的分类和归纳,再接下来的教程中,我还会对这些特性进行具体的介绍,敬请期待。

学习资源

以下是我收集的一些学习资源,希望对大家有所帮助。(绝大多数为英文资料,而我也会争取让本教程成为最好的中文资料之一 :p)

  • Flex 4 in a week – 比较系统的Flex 4教程,以实例为主,理论相对较少。适合喜欢从实践中学习的初学者,可以“从零开始”。
  • Learn Flex 4 from Scratch – Ted的学习笔记,同样是“从零学起”,不过可能由于是学习笔记,内容有些过于简单了。(BTW,Ted也是我比较喜欢的War3亡灵选手的名字,-,-)
  • Adobe TV (MAX 09) – Adobe TV上有很多优秀的Flex 4教学视频。视频的好处在于,即使你不能完全的听懂所讲的内容,看幻灯片和演示也能让你理解的八九不离十了。
  • Flex Examples – 我很佩服作者Peter deHaan的毅力,他的Blog绝对是开发人员的福荫。
  • Flex 4 设计规范 – 在这个白皮书上有大量Flex 4的设计规范,如果你和我一样喜欢研究Flex框架本身的设计的话,就一定要看看。
  • Flex 3和Flex 4的区别 – 如果你对Flex 3已经了然于胸,阅读这篇文章之后就可以开始你的Flex 4之旅了。
  • Spark组件架构介绍 – Spark组件架构是Flex 4最重要的变化(没有之一)。
  • Flex 4中创建组件外观 – Spark组件架构的应用实践。
  • 其他来自Adobe Developer Connection的文章

在下一章中,我将为大家介绍Flex 4中新定义的MXML 2009命名空间和新的MXML标签。

抱歉!评论已关闭.