选择父类

创建组件时,首先要确定是否扩展某个第 2 版类。如果选择扩展某个第 2 版类,则可以扩展某个组件类(例如,Button、CheckBox、ComboBox、List 等)或某个基类(UIObject 或 UIComponent)。除 Media 组件之外,所有其它组件类都扩展基类;如果扩展组件类,该类也会自动从基类继承。

两个基类为组件提供了常见功能。通过扩展这些类,组件一开始即具备一组基本的方法、属性和事件。

在第 2 版框架中,您无需创建 UIObject 子类、UIComponent 子类或任何其它类。即使组件类直接继承自 MovieClip 类,也可以使用许多强大的组件功能:导出到 SWC 文件或编译剪辑、使用内置实时预览、查看可检查属性等等。但是,如果要将组件用于 Macromedia 第 2 版组件,并要使用管理器类,就需要扩展 UIObject 或 UIComponent。

下表简要说明第 2 版基类:

基类

扩展

说明

mx.core.UIObject

MovieClip

UIObject 是所有图形对象的基类。它可以有形状、可以自己进行绘制,还可以是不可见的。

UIObject 提供以下功能:

  • 编辑样式
  • 事件处理
  • 按缩放比例调整大小
mx.core.UIComponent

UIObject

UIComponent 是所有组件的基类。

UIComponent 提供以下功能:

  • 创建焦点导航
  • 创建 Tab 键切换方案
  • 启用和禁用组件
  • 调整组件大小
  • 处理低级鼠标和键盘事件

了解 UIObject 类

基于 Macromedia Component Architecture 第 2 版的组件源自 UIObject 类,该类是 MovieClip 类的子类。MovieClip 类是 Flash 中可以在屏幕上表示可视对象的所有类的基类。

UIObject 添加用于处理样式和事件的方法。它在加载和卸载时(loadunload)、布局更改时(moveresize)以及隐藏或显示时(hidereveal),都会在绘制(draw 事件等效于 MovieClip.onEnterFrame 事件)之前将事件发送到它的侦听器。

UIObject 另外提供只读变量来确定组件的位置和大小(widthheightxy),并提供 move()setSize() 方法来改变对象的位置和大小。

UIObject 类实现以下功能:

了解 UIComponent 类

UIComponent 类是 UIObject 的子类(请参阅"组件语言参考"中的UIComponent 类)。它是处理用户交互(鼠标和键盘输入)的所有组件的基类。UIComponent 类允许组件执行以下操作:

关于扩展其它第 2 版类

为了能够更方便地构造组件,可以扩展任何类的子类,这样也就不需要直接扩展 UIObject 或 UIComponent 类。如果扩展任何其它第 2 版组件类(Media 组件除外),默认情况下也会扩展 UIObject 和 UIComponent。您可以通过扩展"组件"字典中列出的任何组件类来创建新组件类。

例如,如果要创建一个组件,其行为与 Button 组件的行为几乎相同,就可以扩展 Button 类,而不必从基类重新创建 Button 类的所有功能。

下图显示了第 2 版组件的层次结构:

第 2 版组件层次结构


此文件的 FlashPaper 版本可在 Flash 安装目录的以下位置找到:Flash 8\Samples and Tutorials\Samples\Components\arch_diagram.swf。

关于扩展 MovieClip 类

您可以选择不扩展第 2 版类,而让组件直接继承 ActionScript MovieClip 类。但是,如果需要 UIObject 和 UIComponent 的任何功能,则必须亲自构建。您可以打开 UIObject 和 UIComponent 类 (First Run/Classes/mx/core) 来检查它们的构造方式。