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开发者需要知道的十样东西
flex3开发者指南Flex3 developer guide.rar
PHP开发者的Flex入门指南 是一篇不错的学习总结.
NULL 博文链接:https://windmark.iteye.com/blog/1709889
Flex 开发者学习和进阶过程探讨,在RIAMeeting找到这份PDF文档,觉得挺不错的,至少让我了解了自己目前所处的阶段
让开发者快速了解flex,简单的小案例,能清晰高效的了解flex,让初学这早日学会
一线城市Flash&Flex开发者薪资水平调查(2010年9月).pdf
两年的的flex开发,常用功能做成了各个小例子,基本上包含了其中包含的功能有:系统框架,布局控件,菜单控制,分组栏,收缩控件,Excel导出,统计图,下载,分页等常用常用功能,其中还有一个自己写的分栏收缩控件...
flex、flash及air等ios开发证书(P12格式) 压缩包内含两个文件: ios.p12(ios开发证书) mobileprovision.mobileprovision(配置文件) 用该证书及对应配置文件可以免99刀的Apple developer费用,编译出的ipa...
flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图...
ios开发者证书,flex,flash,air手机开发使用,输出越狱版的ipa的利器
flex、flash及air等ios开发证书(P12格式) 压缩包内含三个文件: ios.p12(ios开发证书) mobileprovision.mobileprovision(配置文件) flash ios 设置顺序.doc 是对我们的flash开发ios的一些设置问题 如果 ...
FLEX特效FLEX特效FLEX特效FLEX特效 FLEX特效FLEX特效FLEX特效FLEX特效 FLEX特效FLEX特效FLEX特效FLEX特效 FLEX特效FLEX特效FLEX特效FLEX特效
Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex ...
Flex 4.0 Flex 4.5 API 开发者必备工具 适合从事Flex开发者,和学者
Flex简介Flex简介Flex简介Flex简介Flex简介
flex事件flex事件flex事件flex事件flex事件
flex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex 精通 flexflex学习的好资源啊