简单集合示例

下面是组件类文件的一个简单示例,该文件名为 MyShelf.as。此示例包含从 UIObject 类继承的组件的一个集合属性以及至少应有的一组导入、方法和声明。

如果在此示例中导入 mx.utils.*,则不再要求来自 mx.utils 的类名称是全限定类名。例如,mx.utils.Collection 可以写为 Collection。

import mx.utils.*;
// 标准类声明
class MyShelf extends mx.core.UIObject
{
// 所有类必需的变量
    static var symbolName:String = "MyShelf";
    static var symbolOwner:Object = Object(MyShelf);
    var className:String = "MyShelf";

// Collection 元数据标记和属性
    [Collection(variable="myCompactDiscs",name="My Compact Discs",collectionClass="mx.utils.CollectionImpl", collectionItem="CompactDisc", identifier="Title")]
    
// 集合的 get 和 set 方法
    public function get MyCompactDiscs():mx.utils.Collection 
    { 
        return myCompactDiscs; 
    }     
    public function set MyCompactDiscs(myCDs:mx.utils.Collection):Void
    {
        myCompactDiscs = myCDs;
    }

    // 私有类成员
    private var myCompactDiscs:mx.utils.Collection;

// 必须编写一个对集合项目类的引用,
// 才能强制编译器在 SWC 中将其作为
// 依赖项提供
    private var collItem:CompactDisc;

// 必须编写一个对 mx.utils.CollectionImpl 类的引用,
// 才能强制编译器在 SWC 中将其作为
// 依赖项提供
    private var coll:mx.utils.CollectionImpl;

    // 所有类必需的方法
    function init(Void):Void {
        super.init();
    }
    function size(Void):Void {
        super.size();
    }    
}

创建伴随此类的 FLA 文件以便进行测试:

  1. 在 Flash 中,选择"文件">"新建",然后创建一个 Flash 文档。
  2. 选择"插入">"新建元件"。为其指定名称、链接标识符和 AS 2.0 类名称 MyShelf
  3. 取消选择"在第一帧导出",然后单击"确定"。
  4. 在库中选择 MyShelf 元件,然后从"库"选项菜单中选择"组件定义"。输入 ActionScript 2.0 类名称 MyShelf
  5. 选择"窗口">"公用库">"类",然后将 UtilClasses 拖动到 MyShelf.fla 的库中。
  6. 在 MyShelf 元件的时间轴中,将一个图层命名为资源。创建另一个图层,并将其命名为动作
  7. 在"动作"图层的第 1 帧上放置一个 stop() 函数。
  8. 选择"资源"图层的第 2 帧,然后选择"插入">"时间轴">"关键帧"。
  9. 从 Configuration/ComponentFLA 文件夹打开 StandardComponents.fla 文件,然后将一个 UIObject 实例拖动到"资源"图层第 2 帧内的 MyShelf 舞台上。

    您必须在组件的 FLA 文件中提供 UIObject,因为如上面的类文件所示,MyShelf 会扩展 UIObject。

  10. 在"资源"图层的第 1 帧中绘制一个工具架。

    这可以是一个简单的矩形;它是 MyShelf 组件的一种可视表示形式,仅用于学习的目的。

  11. 在库中选择 MyShelf 影片剪辑,然后选择"转换为编译剪辑"。

    这使您可以将 MyShelf SWF 文件(添加到库中的编译剪辑)拖动到 MyShelf.fla 文件中,以对该组件进行测试。每次对组件进行重新编译时,都会出现"解决库冲突"对话框,因为库中已存在该组件的旧版本。选择替换现有项目。

    注意

    此时您应该已经创建了 CompactDisc 类;否则在转换为编译剪辑时会遇到编译器错误。