《Flex3权威指南》学习笔记 01

Posted on Jul 4, 2011

很久以前看的书,也是很久以前写的笔记。再回顾一遍,算是温故知新吧。

Lesson 1-5:基础知识

  1. Flex 并非从上到下创建组件,而可以看成是由内到外创建。只有应用程序的所有元素都已创建后,此时才是向外部资源请求并使用数据的适当时机;
  2. 直接在 ActionScript 中建立as类,可以创建自定义的事件类,建立值对象(value object)等;
  3. as元标签(Metadata):[Bindable] 被指定在 class 关键字前,表示该类的每一个属性都可以用来绑定,可以被绑定到空间或其它数据结构;
  4. 使用自定义类时,可以使用 import 关键字类导入需要的类,在Flash Builder中,一般会被自动导入;
  5. 所有MXML文件最终会被编译为一个 ActionScript 类,在创建 MXML 文件时必须遵守与创建 ActionScript 类时相同的约定;
  6. ActionScript 中,uint 数据类型表示无符号整数,非负数;
  7. 使用 httpService返回数据的2种方法:
    1. 直接在绑定中使用数据;
    2. 使用 resultEvent事件处理函数;
  8. 若要将数据填入空间或者过滤,排序等手段操作数据,应选择 ArrayCollection 数据结构;
  9. 支持 dataProvider 的控件有三个优点:
    1. 可将相同数据填入多个控件;
    2. 可在运行时断开dataProvider;
    3. 当修改 dataProvider 时,更改会反映到所有使用它的控件上;

Lesson 6:为控件使用远程XML数据

  1. RPC,HttpService调用过程:

    1. <mx:Application 设置RPC >;
    2. <mx:HttpService 设置结果处理函数dataHandler(event)>;
    3. <mx: script > dataHandler将获取的数据赋予变量或控件;
  2. XML结构:

    1. 根节点包含多个节点;
    2. 节点有属性,也可包含多个子节点;
    3. 同样,子节点也有属性,也可包含多个子节点;
  3. E4X 具有非常强大的XML解析能力:

     	category.product.( @cost == “1.95”);//对属性进行谓词过滤(predicate filtering) 
     	category.product.( unit == “bag”);//对子节点进行谓词过滤
     	category..product;//对category下所有子节点过滤,返回所有product,不论其层级位置;
     	//( .. )叫后代存取器 ( descendant accessor )
    
  4. XMLListCollection 与 ArrayCollection 非常相似,但是 XMLListCollection 用于XML数据;

  5. 光标(cursor) 指向集合类的一个位置,允许直接访问集合中特定的任何一项。使用光标便于处理集合中的项; 光标功能:

    1. 可以向前/向后移动;
    2. 使用光标找到特定项;
    3. 在光标位置获取项;
    4. 在光标所在位置添加/移除项; 其实和PL/SQL的游标,C++/java中的迭代器iterator差不多。
  6. 任何实现了 ICursorView 接口的类都可以使用cursor;

  7. 若在 ArrayCollection 中使用 cursor,必须先排序;

  8. 使用 mx:… MXML标签,实际上使用了一个组件。Flex 可以被认为是一种基于组件的开发模型;

Lesson 7:用MXML创建组件

  1. 所有组件其实都是 ActionScript 类;
  2. 自定义组件可以:
    1. 向预定义的组件中添加功能;
    2. 将多个组件组合到一起;
  3. 组件的优点:
    1. 让应用程序更易于编写,调试和维护;
    2. 使团队开发变得更容易;
    3. 能够实现整套可重用的代码。
  4. MVC 设计模式
    • Model:应用程序用到的数据;
    • View:用户界面;
    • Controller:对事件( 用户事件,系统事件… )响应并作相应的业务处理;
  5. MVC流程:
    1. 用户在 用户界面(View)交互;
    2. Controller处理用户的输入事件;
    3. Controller访问模型(Model),获取/修改/删除数据;
    4. 使用模型(Model)将数据展现到View中;
    5. View中更新数据,完成并返回到第1步;
    • 数据管理器组件:集中数据请求,不必在不同应用程序中编写大量 httpSerivce请求;
    • UIComponent 是创建MXML组件时,可以使用的最轻量级的组件;
    • 设计组件时,应尽量避免访问父类组件的函数,属性等,减少耦合;
    • 重构:使用自定义组件重构应用程序,便于模块的开发和维护。

Lesson 8:使用控件和Repeater控制数据集

  1. HorizontalList, TileList 能以多种方式为数据集中的每个对象显示数据;
  2. 列表控件(ListBase)种类:
    • DataGrid
    • HorizontalList
    • List
    • ComboBox
    • TileList
    • Tree
  3. Repeater控件可以遍历数据集:
    • 属性: currentItem:引用所有数据中当前正在处理的项; currentIndex:指定当前项在数据集中的位置,起始为0;
    • 方法: getRepeaterItem:当Repeater组件完成重复以后,可以使用该方法决定数据处理函数要返回dataProvider属性的一项数据;
  4. TileList与Repeater的选择:
    • 优先选择 TileList;
    • TileList在要显示组件时创建对象实例;
    • Tile + Repeater 则在整个数据集中创建所有对象实例;
    • 应考虑数据集的大小及具体设计要求选择合适的控件;