《Flex3权威指南》学习笔记 01
很久以前看的书,也是很久以前写的笔记。再回顾一遍,算是温故知新吧。
Lesson 1-5:基础知识
- Flex 并非从上到下创建组件,而可以看成是由内到外创建。只有应用程序的所有元素都已创建后,此时才是向外部资源请求并使用数据的适当时机;
- 直接在 ActionScript 中建立as类,可以创建自定义的事件类,建立值对象(value object)等;
- as元标签(Metadata):[Bindable] 被指定在 class 关键字前,表示该类的每一个属性都可以用来绑定,可以被绑定到空间或其它数据结构;
- 使用自定义类时,可以使用 import 关键字类导入需要的类,在Flash Builder中,一般会被自动导入;
- 所有MXML文件最终会被编译为一个 ActionScript 类,在创建 MXML 文件时必须遵守与创建 ActionScript 类时相同的约定;
- ActionScript 中,uint 数据类型表示无符号整数,非负数;
- 使用 httpService返回数据的2种方法:
- 直接在绑定中使用数据;
- 使用 resultEvent事件处理函数;
- 若要将数据填入空间或者过滤,排序等手段操作数据,应选择 ArrayCollection 数据结构;
- 支持 dataProvider 的控件有三个优点:
- 可将相同数据填入多个控件;
- 可在运行时断开dataProvider;
- 当修改 dataProvider 时,更改会反映到所有使用它的控件上;
Lesson 6:为控件使用远程XML数据
-
RPC,HttpService调用过程:
- <mx:Application 设置RPC >;
- <mx:HttpService 设置结果处理函数dataHandler(event)>;
- <mx: script > dataHandler将获取的数据赋予变量或控件;
-
XML结构:
- 根节点包含多个节点;
- 节点有属性,也可包含多个子节点;
- 同样,子节点也有属性,也可包含多个子节点;
-
E4X 具有非常强大的XML解析能力:
category.product.( @cost == “1.95”);//对属性进行谓词过滤(predicate filtering) category.product.( unit == “bag”);//对子节点进行谓词过滤 category..product;//对category下所有子节点过滤,返回所有product,不论其层级位置; //( .. )叫后代存取器 ( descendant accessor )
-
XMLListCollection 与 ArrayCollection 非常相似,但是 XMLListCollection 用于XML数据;
-
光标(cursor) 指向集合类的一个位置,允许直接访问集合中特定的任何一项。使用光标便于处理集合中的项; 光标功能:
- 可以向前/向后移动;
- 使用光标找到特定项;
- 在光标位置获取项;
- 在光标所在位置添加/移除项; 其实和PL/SQL的游标,C++/java中的迭代器iterator差不多。
-
任何实现了 ICursorView 接口的类都可以使用cursor;
-
若在 ArrayCollection 中使用 cursor,必须先排序;
-
使用 mx:… MXML标签,实际上使用了一个组件。Flex 可以被认为是一种基于组件的开发模型;
Lesson 7:用MXML创建组件
- 所有组件其实都是 ActionScript 类;
- 自定义组件可以:
- 向预定义的组件中添加功能;
- 将多个组件组合到一起;
- 组件的优点:
- 让应用程序更易于编写,调试和维护;
- 使团队开发变得更容易;
- 能够实现整套可重用的代码。
- MVC 设计模式
- Model:应用程序用到的数据;
- View:用户界面;
- Controller:对事件( 用户事件,系统事件… )响应并作相应的业务处理;
- MVC流程:
- 用户在 用户界面(View)交互;
- Controller处理用户的输入事件;
- Controller访问模型(Model),获取/修改/删除数据;
- 使用模型(Model)将数据展现到View中;
- View中更新数据,完成并返回到第1步;
- 数据管理器组件:集中数据请求,不必在不同应用程序中编写大量 httpSerivce请求;
- UIComponent 是创建MXML组件时,可以使用的最轻量级的组件;
- 设计组件时,应尽量避免访问父类组件的函数,属性等,减少耦合;
- 重构:使用自定义组件重构应用程序,便于模块的开发和维护。
Lesson 8:使用控件和Repeater控制数据集
- HorizontalList, TileList 能以多种方式为数据集中的每个对象显示数据;
- 列表控件(ListBase)种类:
- DataGrid
- HorizontalList
- List
- ComboBox
- TileList
- Tree
- Repeater控件可以遍历数据集:
- 属性: currentItem:引用所有数据中当前正在处理的项; currentIndex:指定当前项在数据集中的位置,起始为0;
- 方法: getRepeaterItem:当Repeater组件完成重复以后,可以使用该方法决定数据处理函数要返回dataProvider属性的一项数据;
- TileList与Repeater的选择:
- 优先选择 TileList;
- TileList在要显示组件时创建对象实例;
- Tile + Repeater 则在整个数据集中创建所有对象实例;
- 应考虑数据集的大小及具体设计要求选择合适的控件;