Flex4 新特性
原文地址:?http://www.ibm.com/developerworks/cn/web/1103_mars_flex4/index.html?ca=drs- Flex4 新特性概述 Adobe Flex 最初是由?Macromedia?公司发布的,自 2005 年 10 月 Flex 被 Adobe 以 Flex SDK 2.0 发布之后,Flex SDK 已是一个开源的框架,用于构建富客户端应用程序。开发语言也由 Action Script 2.0 升级为 ActionScript3.0,,并需要 Flash Player 9 以上做为运行时环境。Flex 3 对 Flex 的框架进行了优化,将 Flex 框架集成到了 Flash Player 里,即 runtime share library(RSL),这样就可以将 Flex 框架做为公共类库应用到程序中,减小了程序自身的体积,提高程序的运行效率。 Adobe 于 2009 年发布了 Flex 4 的 bate 版。现在,我们已经可以在 opensource.adobe.com 下载 Flex 4 SDK 的正式版本。与之前版本相比,Flex 4 对外观 (Skin)、效果(effect)、布局 (Layout)、数据绑定等在功能上很大的增强和改进。 Flex 4 提供了多种主题皮肤供用户选择来改变整个项目的主题外观,Skin 的设计也将组件的逻辑元素与可视元素明确的区分开来,引入了新的皮肤和组件架构,被称为 Spark,但是 Flex 4 保留了 Flex3 的命名空间和组件库,所以 Flex4 保持了与 Flex3 的向后兼容。Spark 是以 Flex 3 的 Halo 架构为基础构建的,Spark 扩展了 Halo 的核心基类 UIComponent,所以现有 MX 组件可以与新 Spark 架构组件相互结合应用,彼此也可以轻松实现互操作。 Spark 对于效果(effect)在功能上进行了增强,主要体现在效果应用的对象范围与新特效的增加增强上,Spark 中可以将效果应用在任意的对象和类型上,提升了其灵活性,增强的特效主要表现在:支持过渡自动反向、将 Pixel Bender 过滤器应用为效果 ( 即图片着色的效果 )、在 XYZ 三个平面中变形和基于复杂关键帧的动画。Spark 扩展了布局机制,包含一个非常灵活的布局机制,运行时可指定的布局包含对 2D 旋转和刻度的全面支持,还可以在布局后将 Flash Player 10 新的 3D 功能应用于任何组件。与 Flex 3 相比 Flex 4 最大的不同是 Spark 对 FXG(MXML 图形元素 ) 的支持,FXG 是基于 MXML 标签来定义图形显示组件的,在以前的版本中,如果要在界面显示一个特殊的图形,需用 Action Script 调用 Flex SDK 的绘图 API 来实现,与 Flex3 相比对开发的效率和功能的实现提升不少。 还有一些新功能如对本地文件的操作,变换项目不同的主题皮肤、双向数据绑定等等,这些功能在以前的版本中如果要实现,需要写大量的代码来实现,现在 Flex4 对这些功能全部支持。 回页首 Flex 4 的重要特性及其应用 命名空间的变化 Flex 4 将 Flex 3 中原有的类全部保留了下来,并引入的新的 Spark 类库,Halo 与 Spark 共同享用了大部分的类名称,为了避免 MXML 中出现名称冲突,所以命名空间与之前的版本相比有相应的变化。Flex 4 SDK 有四个命名空间:MXML 2006、MXML 2009、MX 和 Spark。 MXML 2006 命名空间主要应用于 Flex 4 正式版之前的版本,并且 Flex 4 正式版之前的版本也只有 MXML2006 命名空间,该命名空间包含了 Action Script 顶级元素及 MX 包中所有组件类。 其中后面三个命名空间主要作用于 Flex 4 正式版中,它们所代表的内容分别是: xmlns:fx="http://ns.adobe.com/mxml/2009" fx 命名空间下包含 Action Script 顶级元素和内建到 MXML 编译器里的标签。 xmlns:mx="library://ns.adobe.com/flex/mx" mx 命名空间包含着放在 mx.* 包里那些组件,Flex 图表、Flex 数据可视化组件等等。 xmlns:s="library://ns.adobe.com/flex/spark" s 命名空间包含所有 Spark 组件,与 MXML 2009 语言命名空间一起使用。S 命名空间包含 spark.* 和 flashx.* 包中所有核心类。这个命名空间还包含了 19 个 RPC 类,例如我们常用到的 HTTPService 和 RemoteObject 组件,如果需要详细了解 s 命名空间的具体对象,可以参见您所下载的 Flex 4 SDK 目录 sdks4.0.0frameworks 下的 spark-manifest.xml 文件,里面有详细的分类和说明。 新特效与三维支持 Flex 4 中的效果与 Flex 3 相比是一个全新架构的一组特效类,都继承自 Animate 类,Animate 类继承自 Effect 类,Flex 3 中的效果基类 TweenEffect 也是继承自 Effect,所以这两组特效类是一种平行关系,但是 Spark 中的特效对所有对象都有效,包括原有的 Halo 控件,新的 Spark 控件,甚至 graphic 绘制的图像, 所以我们从 Flex 3 向 Flex 4 移植代码时可以保留原有代码不变。 Flex 4 中的特效按其对执行对象的类型不同,可以分为五种。 Flex 4 新特效分类列表
3D 特效只能应用于 Spark 组件,因 Spark 组件支持 Z 坐标,支持三维是 Flex 4 的新特性之一。3D 特效是通过改过 x.y,z 的坐标值,实现目标对象远离或靠近的视觉效果,还可以实现让目标对象围绕某个坐标旋转的效果。 我们有时在购物或娱乐型的网站,会看到一些翻页的效果,在以前这类特效一般是由 Flash 制作的,Flex 很难做到。现在 Flex 4 中也提供了类似的特效类来实现翻页的功能。Rotate3D 类可以在三维方向上围绕 x、y 或 z 轴旋转目标对象。旋转是围绕目标的转换中心发生的。现在一个登录界面为例,让该界面围绕 X 轴以逆时针的方向旋转, 关键代码: 定义 Rotate3D 对象,设置作用对象及 X 轴旋转属性值。
运行效果: 图 1. 登录窗口 图 2. 绕 Y 轴旋转 50 度后界面效果 : Figure xxx. Requires a heading 布局模型 在 Flex 3 中我们常用到的容器布局组件有 Canvas、HBox、VBox、Tile 等等,每一种对应一种排列子组件布局的样式,如 Canvas 只支持绝对定义,HBox 只支持横向排列子组件,VBox 只支持竖向排列子组件,Tile 平铺子组件可自动换行显示,很明然这些容器布局的实现算法与容器是绑定在一起的,重用性较差,而且这些重量级的容器组件大量使用后会导致最终生成的 SWF 体积非常大,不利于 WEB 界面显示,所以官方建议尽量用 Canvas 布局,少用或不用其它容器组件。在 Flex 4 中,布局的实现算法与容器完全分离。 Spark 布局算法的类型分为四种: 现在以一个登录表单页面来了解 Flex 4 的页面布局机制。 Flex 4 示例关键代码 : 运行效果: 图 3. 应用 Flex 4 界面元素及布局组件实现的登录界面 我们以实现同样的功能,看一下在 Flex 3 中是如何实现的, Flex 3 示例关键代码: 运行效果: 图 4. 应用 Flex 3 界面元素及布局组件实现的登录界面 根据以上两个实例的比较,在代码结构中有明显的区别。Flex 3 的 Panel 容器中只有位置上很少的属性设置,而 Flex 4 做了很多属性样式的设置,这是因为 Flex 3 中 Panel 容器内置了很复杂的样式及布局算法,而在 Flex 4 中 Panel 只是做为一个存放可视组件的容器,样式需要自定义实现,Flex 3 和 Flex 4 生成的 SWF 的文件大小分别是 73KB 和 43KB。 这里只是很小的简单实例,如果比较复杂的界面布局中,Flex 4 的容器及布局的组合应用,将在灵活性和程序优化上得到更大的体现。 本地文件操作 做为 WEB 应用程序对客户端机器的文件操作都有安全性的限制,如果在实现对本地文本文件的读写操用只能采用 JavaScript 和 fileinput 控件来获取本地路径,再对本地文件进行读写操作。而在 Flex 3 中则是通过间接调用 JS 来实现,从本质上讲都是一种方法。对于该问题 Flex 4 提供了新的文件操作类? 关键代码: 皮肤与样式表 Flex Builder 4 缺省主题样式是 Spark 主题,我们之前提到过 Flex 4 保留了 Flex 3 的皮肤和组件架构,即 Flex 4 同时包含有 Halo 和 Spark 两种主题皮肤,所以你可以通过设置项目的属性来改变当前项目的主题样式。通过“Properties”(属性)->“Flex Theme”(Flex 主题)面板将主题从默认 Spark 主题改为 Halo。在“Flex Theme”(Flex 主题)面板中,单击 Halo 主题,并保存。 修改 Flex4 主题样式 图 5.Flex 4 提供的主题皮肤选项列表 选择 CSS 模板样式 CSS 模板是对界面配色方案的定义。Flex 4 提供了以下五种 CSS 模板。 图 6.CSS 配色模板列表 设置界面风格 在该设置界面的 Flex 4 Graphical Samples 中可以选择界面风格,比如金属风格 (Arcade)、深蓝色金属 (CobaltGraphical)、石墨 (GraphiteGraphical)、木纹风格 (Zen) 图 7. 界面风格选项列表 使用 Flex4 提供的这些主题模板可以实现快速建模,提高开发的效率。 双向数据绑定 双向数据绑定是 Flex 4 的一个新特性,顾名思义就是将两个对象的值绑定在一起,无论哪个对象的值发生变化,与之绑定的另外一个对象上的值也会发生相应的变化。一般我们会将数据模型与页面表单的值绑定在一起,当表单值发生改变时,表单值也会自动更新到数据模型上,再用数据模型做一些值有效性校验,这样省去额外的代码,只需一个绑定符即可,也使代码整体上很简洁。 我们通过具体实例来比较 Flex 3 与 Flex 4 中如果同样实现双向数据绑定的方法的差别,实例要实现的功能是任意一个文本框输入,两个文件框都可以同步显示, 关键代码如下: 在 flex3 中,数据的双向绑定用: 在 FLEX4 中,数据的双向绑定用: 很明显,Flex3 要实现双向绑定,就必须用数据绑定符“{}”将两个文本输入框的值都绑定,而 Flex 4 中则使用新增加的双向数据绑定符 “@{}”来实现。 MXML 图形元素 在 Flex 3 中如果我们要显示一个矢量图形,我们就要通过可视化组件的 graphics 对象调用绘图 API 来完成,对此,Flex 4 向开发者提供一组基本几何图形类,通过 MXML 标签描述设定其属性来完成矢量图形的绘制,此外这些图形元素还支持渐变色、透明度、位图填充等功能。 我们以 MXML 图形标签绘一个有立体效果的圆体来了解 Flex 4 的图形元素标签的应用。。 关键代码: 运行效果: 图 8. 圆球立体效果 该示例应用了 MXML 图形元素 Ellipse( 用于绘制圆形或椭圆 ) 标签,滤镜效果 (DropShadowFilter),还有填充渐变色功能来完成。 总结 本文以对比的方式介绍了 Flex 4 带来的部分新特性,未提及的部分请读者关注 Flex 的官方文档或在实际使用过程中自行体会。希望本文能对 Flex 使用者带来帮助。 参考资料 学习
讨论
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |