创建ActionScript组件
你可以用ActionScript创建可重用的组件然后在Flex程序中使用类似MXML标签来引用这些自定义的组件。这些自定义的组件包含了图形元素,自定义的业务逻辑,或者扩展已经存在的Flex组件。它们可以继承Flex中任意的有效的左键。
自定义组件有几种好处。这些组件可以让你的程序分成几个单独的模块,这些模块可以独立的开发和维护。通过在自定义组件中实现常用的逻辑,你可以建立一套可重用的组件以便你可以在多个Flex程序中共用。
此外,你可以通过扩展Flex的类的层级结构,在Flex组件的基础上形成你的自定义组件。你可以创建Flex可视化组件的自定义版本,也可以创建非可视化组件的自定义版本,如数据校验,格式化组件,和效果组件。
例如,你可以继承Button控件,然后自定义一个button控件,如下例所示:
package myControls {
import mx.controls.Button;
public class MyButton extends Button {
public function MyButton() {
...
}
...
}
}
在这个例子中,你在MyButton.as文件中写了MyButton这个组件,并且将这个文件存放到Flex应用程序的根目录的子目录下。你的组件的完整类名反映了它的位置所在。在该例中,自定义组件的完整类名是myControls.MyButton。
你可以在Flex程序(如MyApp.mxml)中引用刚才创建的自定义Button控件,如下例所示:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:cmp="myControls.*">
<cmp:MyButton label="Jack"/>
</mx:Application>
在这个例子中,我们声明了名为cmp的命名空间来说明自定义组件在主程序的目录结构中的位置。然后就可以使用以命名空间作为前缀的MXML标签引用刚才的自定义组件。
通常情况下,你可以将自定义的组件放到源路径的目录中去。这些路径包含了在flex-config.xml的<source-path>标签中定义的任何目录。
自定义组件的类型
你可以创建以下几种类型的自定义组件:
用户界面组件
用户界面组件包含了逻辑出和可视化元素两部分。这些组件一般都是扩展自Flex的组件。你可以扩展UIComponent类,或者Flex的任意组件,如Button,ComboBox,或DataGrid。自定义组件继承了基类的所有的公共方法,以及所有公共和保护的属性。
非可视化组件
非可视化组件定义的非可视的元素。非可视化组件是一种不是继承自UIComponent类的ActionScript类。这些组件可以在运行的效率更高。