`
madfroghe
  • 浏览: 122166 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Flex开发者应该知道的十件事

    博客分类:
  • Flex
阅读更多

Michael Portuesi发表了一篇名为Top 10 things new Flex developers should know的博文,个人认为写的比较到位(很多同类文章总有些故弄玄虚的味道)。我无意通篇翻译,只挑些只言片语总结一下,顺便加一些我自己的看法。


开始学习Flex之前
如果你了解HTML/CSS,也略懂JavaScript,但从没接触过Flex和ActionScript,那你真的应该先去了解一些面向对象的知识,因为ActionScript3是一门纯粹的面向对象语言,Flex则是一个面向对象框架。

1. 事情经常是“异步”发生的

什么是“异步”?恩,就是说当你执行了一行代码,你不能假设这行代码会立刻起到实际的作用。Flex是一个充满着异步机制的框架。这不仅仅意味着你在使用WebService这样的组件时是异步的,甚至连为DataGrid这样的控件设置DataProvider也是异步的。

[Jinni] Flex中的很多异步取决于在Flex组件生命周期中非常重要的一种“推迟”技术,即把所有的更新推迟到每次渲染前进行。

2. 分清Flex组件的属性和样式

Flex组件既有属性,也有样式。你需要了解这两者的区别。因为在ActionScript中设置组件和样式的方法是不同的。

[Jinni] 在MXML中你可能看不出属性和样式的区别,这时候最好的办法就是查API手册。

3. CSS的样式和HTML不完全一样

虽然标准CSS使用连字符(例如text-font)格式来定义样式名称,但是Flex使用驼峰式的命名格式(例如textFont)。一个显而易见的原因是连字符不能出现在XML的属性中,所以你不能用这样的名字作为MXML标签的属性。
当然,如果你把样式定义在外部的CSS文件中或者Style标签中,你也可以使用连字符格式的样式名。另外,Flex定义了很多HTML中不存在的CSS样式。

[Jinni] Flex 4中支持了更多的CSS Selector类型,例如id selector等等。

4. MXML和ActionScript其实是一回事,就算他们看起来很不一样

所有的MXML标签最终会被Flex编译器转化为ActionScript对象。你也可以在MXML中使用ActionScript。当你创建一个组件时,你可以选择使用ActionScript还是MXML。

[Jinni] MXML和ActionScript的关系,是Flex开发者必须要搞清楚的,如果你想洞悉其中的细节,可以使用-keep的编译参数,看看你写的MXML最终被转化成了什么样的代码。

5. Flex的代码隐藏(Code-behind)模式

MXML和ActionScript虽然通用,但是实际上有各自的职责,一般来说,MXML负责描述界面,而ActionScript用来完成功能。而代码隐藏是指MXML和ActionScript应该解耦,这样设计师可以直接修改MXML而不用接触代码,程序员则可以更好的组织和重用功能。

[Jinni] Flex 4的Spark组件架构把Code-behind模式发挥到了极致。

6. Flex的组件的生命周期

Flex定义了一个优秀的组件生命周期,负责组件的创建,运行,和销毁。同时也定义了一些“入口”,开发者可以由此来完成定制化的工作。对组件生命周期的不甚理解有可能会导致使用错误的编程模式。

[Jinni] 对Flex组件生命周期的理解也是我一直强调的必修课。在之前的一篇博文的最后我推荐了一篇文章,有兴趣可以去看看。

7. Flash Player的“跑道”模型

理解Flash Player的渲染和代码执行机制也是十分重要的。当你执行了改变界面的指令时,Flash Player并不是立刻把你要的内容显示在屏幕上,它根据一定的周期来刷新屏幕,而代码的执行则是另一回事。这和Java正相反,Java总是等待程序主动告诉它什么时候重绘屏幕。

[Jinni] Flash Player的“跑道”模型最早由Ted Patrick提出,而Sean Christmann将这个理论进一步扩展成了“切片”模型,但是我对这个模型的结论抱有很大的质疑,这个模型和我的实验结果有很大的出入,有时间我会专门来撰写文章和大家分享讨论。

8. 理解数据绑定和Watcher的工作方式

Flex提供了一种数据绑定机制,简单地说,就是将一个源属性绑定到一个目标属性上,当源属性发生变化时,目标属性也会随之变化。你不仅仅可以绑定到属性,也可以绑定到函数。甚至你可以为某个属性创建一个Watcher,当属性变化时,你会获得事件通知。

[Jinni] Flex 4支持了新的双向数据绑定语法,用法很简单,在{}前面加个@就可以,例如text=@{input.text}。

9. 数据封装与松散耦合
[Jinni] 这段很长,主要是谈一些设计模式和方法学的问题,就不过多说了。 -_-

10. 弱引用与强引用

无论你是使用任何语言开发,内存管理对都是至关重要的,否则你可能会陷入内存泄露或内存碎片的泥淖中。你可以通过这篇文章来了解如何在AS3中创建弱引用。

[Jinni] AS3的垃圾回收有两种方式,一是通过引用计数器,对所有引用数为0的对象进行回收。二是标记+清理模式,从对象树的根节点开始遍历并作标记,没有被标记的对象会被回收。后者的开销更大,但可以用来解决循环引用的问题。而弱引用就是当你为某个对象创建一个引用时,该引用不会影响引用计数器的值,因此即使你不对该引用置空,对象仍然可以被回收(只要该对象身上没有任何强引用)。在AS3中有两个地方可以使用弱引用机制,一是添加监听器时,二是使用Dictionary对象。

分享到:
评论

相关推荐

    一名优秀Flex开发者需要知道的十样东西

    一名优秀的Flex开发者不仅需要掌握基本的Flex框架,还要深入理解ActionScript 3.0(AS3)和面向对象编程(OOP)原则。ActionScript 3是Flex的基础,它是一个完全支持OOP的编程语言。对于没有OOP背景的开发者来说,...

    AS3分享:FLEX开发者必备的十多个工具

    这篇博客“AS3分享:FLEX开发者必备的十多个工具”旨在为开发者提供一系列实用的资源,帮助他们提升工作效率和代码质量。尽管描述部分为空,但我们可以根据标题推测,博主Windmark在文中分享了至少十几个对Flex...

    flex3开发者指南Flex3 developer guide.rar

    flex3开发者指南Flex3 developer guide.rar

    一线城市Flash&Flex开发者薪资水平调查(2010年9月).pdf

    ### 一线城市Flash&Flex开发者薪资水平调查(2010年9月) #### 调查背景 2010年9月,针对一线城市的Flash&Flex开发者进行了一次薪资水平调查。此次调查由“天地会人才库”组织并完成,通过对随机抽取的103名Flash&...

    flex的demo案例(初级flex开发者适用)

    让开发者快速了解flex,简单的小案例,能清晰高效的了解flex,让初学这早日学会

    Flex开发者的福利

    两年的的flex开发,常用功能做成了各个小例子,基本上包含了其中包含的功能有:系统框架,布局控件,菜单控制,分组栏,收缩控件,Excel导出,统计图,下载,分页等常用常用功能,其中还有一个自己写的分栏收缩控件...

    Flex入门指南—PHP开发者

    1. **Flex概述**:Flex是一种开发工具,它提供了丰富的用户界面组件库,使得开发者能够创建出具有图形化、动态效果的应用程序。Flex项目通常由.mxml和.as文件组成,其中.mxml文件负责布局和组件定义,而.as文件则...

    flex、flash及air等移动设备ios开发者证书

    flex、flash及air等ios开发证书(P12格式) 压缩包内含两个文件: ios.p12(ios开发证书) mobileprovision.mobileprovision(配置文件) 用该证书及对应配置文件可以免99刀的Apple developer费用,编译出的ipa...

    Flex开发辅助工具

    Flex开发辅助工具是一系列专为Flex开发者设计的实用工具,主要以SWF(Shockwave Flash)格式提供。这些工具能够帮助开发者更有效地理解和利用Flex框架的功能,提高开发效率。下面将逐一详细介绍这些文件: 1. **...

    Flex万年历记事本_flex源码

    3. **Flex Builder/Flash Builder**:这个项目可能是在Adobe Flex Builder或Flash Builder集成开发环境中创建的,这两个工具提供了强大的调试、编译和部署功能,帮助开发者高效地构建Flex应用。 4. **数据绑定**:...

    flex实战项目,flex开发

    这个“Flex实战项目”可能是一个使用Flex技术构建的实际应用示例,旨在帮助开发者提升在Flex平台上的实践能力。 1. **Flex简介**:Flex是一个强大的开发工具,主要用于创建交互式、高性能的Web应用程序。它的核心是...

    ios开发者证书,flex,flash,air手机开发使用

    总结起来,这个压缩包文件可能包含的是与iOS开发者证书相关的指南或工具,帮助使用Flex、Flash和Air进行手机应用开发的人员了解如何生成和使用证书来构建和签署IPA文件,以便在越狱或非越狱的iOS设备上运行。...

    flex插件版

    Flex插件版是一款专为Flex开发人员设计的重要工具,它极大地简化了开发流程,免去了开发者配置SDK的繁琐步骤。Flex是一种基于ActionScript和MXML的开放源代码框架,主要用于构建富互联网应用程序(RIA),特别是在...

    flex 官方文档 中文教程

    本教程基于Flex官方文档,旨在为开发者提供中文版的详细学习指南,帮助理解并掌握Flex的核心概念、组件、布局、事件处理以及数据绑定等关键知识点。 1. **Flex简介** Flex是基于ActionScript 3.0和Flash Player或...

    Flex资料大全(Flex白皮书 Flex cookbok Flex编程指南 Flex设计模式等)

    Flex编程指南可能详细阐述了Flex开发过程中的核心概念和技术,如ActionScript 3.0语法、MXML组件模型、数据服务集成、移动应用开发等方面,帮助开发者掌握Flex编程的基础和高级技巧。 4. **client_server_...

    FLEX网站源码 FLEX网站源码 FLEX网站源码

    此“FLEX网站源码”压缩包文件很可能包含了一系列Flex项目或组件的源代码,可以帮助开发者理解和学习Flex的相关知识。 1. **Flex框架介绍**:Flex框架主要由Flex SDK和Flex Builder两部分组成。SDK是免费的,包含...

    flex全书籍 flex全书籍

    10. **最佳实践与性能优化**:学习Flex时,了解如何编写高效代码、优化布局和内存管理,以及如何利用缓存和数据流控制提升应用性能,是成为专业Flex开发者的关键。 通过阅读Flex全书籍,你将能够掌握这些核心概念和...

Global site tag (gtag.js) - Google Analytics