mx.core
public class ClassFactory
继承ClassFactory Inheritance Object
实现 IFactory
子类 ContextualClassFactory

ClassFactory 实例是一个“工厂对象”,Flex 可用其生成其它类的实例,每个实例拥有相同的属性。

构建工厂对象时,指定 generator 类。然后,在工厂对象上设置 properties 属性。Flex 通过调用工厂对象的 newInstance() 方法使用工厂对象生成实例。

newInstance() 方法创建 generator 类的新实例,并在新实例中设置由 properties 指定的属性。如果需要进一步自定义生成的实例,则可以覆盖 newInstance() 方法。

ClassFactory 类实现 IFactory 接口。因此,通过该类,您可以创建可分配到 IFactory 类型属性的对象,如 List 控件的 itemRenderer 属性或 DataGrid 控件的 itemEditor 属性。

例如,假设您编写了一个名为 ProductRenderer 的项目渲染器类,该类包含一个 showProductImage 属性,此属性可以是 truefalse。如果您希望 List 控件使用此渲染器,并使每个渲染器实例都显示产品图像,则应编写以下代码:

var productRenderer:ClassFactory = new ClassFactory(ProductRenderer);
  productRenderer.properties = { showProductImage: true };
  myList.itemRenderer = productRenderer;

List 控件对 itemRenderer 调用 newInstance() 方法以创建 ProductRenderer 的各实例,并将每个实例的 showProductImage 属性设置为 true。如果希望有一个省略产品图像的不同 List 控件,可以使用 ProductRenderer 类创建另一个 properties 属性设置为 { showProductImage: false } 的 ClassFactory。

使用 properties 属性配置实例的功能非常强大,因为它允许以不同方式使用单个 generator 类。但是,通常创建不需要设置属性的不可配置 generator 类。为此,MXML 允许您使用以下语法:

<mx:List id="myList" itemRenderer="ProductRenderer">

MXML 编译器自动为您创建 ClassFactory 实例。

另请参见

mx.core.IFactory
mx.controls.List


公共属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  generator : Class
newInstance() 方法根据工厂对象生成对象时使用的类。
ClassFactory
  properties : Object = null
一个 Object,其名称/值对指定对 newInstance() 方法生成的各个对象设置的属性。
ClassFactory
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
公共方法
 方法定义方
  
ClassFactory(generator:Class = null)
构造函数。
ClassFactory
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
  
使用由 properties 指定的属性创建 generator 类的新实例。
ClassFactory
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
属性详细信息
generator属性
public var generator:Class

newInstance() 方法根据工厂对象生成对象时使用的 Class。

properties属性 
public var properties:Object = null

一个 Object,其名称/值对指定对 newInstance() 方法生成的各个对象设置的属性。

例如,如果将 properties 设置为 { text: "Hello", width: 100 },则通过调用 newInstance() 生成的 generator 类的每个实例的 textwidth 将分别设置为 "Hello"100

默认值为 null.

构造函数详细信息
ClassFactory()构造函数
public function ClassFactory(generator:Class = null)

构造函数。

参数
generator:Class (default = null)newInstance() 方法根据工厂对象生成对象时使用的 Class。
方法详细信息
newInstance()方法
public function newInstance():*

使用由 properties 指定的属性创建 generator 类的新实例。

此方法实现 IFactory 接口的 newInstance() 方法。

返回
* — 已创建的新实例。