包 | mx.core |
类 | public class ClassFactory |
继承 | ClassFactory Object |
实现 | IFactory |
子类 | ContextualClassFactory |
构建工厂对象时,指定 generator
类。然后,在工厂对象上设置 properties
属性。Flex 通过调用工厂对象的 newInstance()
方法使用工厂对象生成实例。
newInstance()
方法创建 generator
类的新实例,并在新实例中设置由 properties
指定的属性。如果需要进一步自定义生成的实例,则可以覆盖 newInstance()
方法。
ClassFactory 类实现 IFactory 接口。因此,通过该类,您可以创建可分配到 IFactory 类型属性的对象,如 List 控件的 itemRenderer
属性或 DataGrid 控件的 itemEditor
属性。
例如,假设您编写了一个名为 ProductRenderer 的项目渲染器类,该类包含一个 showProductImage
属性,此属性可以是 true
或 false
。如果您希望 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 实例。
另请参见
属性 | 定义方 | ||
---|---|---|---|
constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | ||
generator : Class newInstance() 方法根据工厂对象生成对象时使用的类。 | ClassFactory | ||
properties : Object = null 一个 Object,其名称/值对指定对 newInstance() 方法生成的各个对象设置的属性。 | ClassFactory | ||
prototype : Object [静态]
对类或函数对象的原型对象的引用。 | Object |
方法 | 定义方 | ||
---|---|---|---|
ClassFactory(generator:Class = null) 构造函数。 | ClassFactory | ||
指示对象是否已经定义了指定的属性。 | Object | ||
指示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
newInstance():* 使用由 properties 指定的属性创建 generator 类的新实例。 | ClassFactory | ||
指示指定的属性是否存在、是否可枚举。 | Object | ||
设置循环操作动态属性的可用性。 | Object | ||
返回指定对象的字符串表示形式。 | Object | ||
返回指定对象的原始值。 | Object |
generator | 属性 |
public var generator:Class
newInstance()
方法根据工厂对象生成对象时使用的 Class。
properties | 属性 |
public var properties:Object = null
一个 Object,其名称/值对指定对 newInstance()
方法生成的各个对象设置的属性。
例如,如果将 properties
设置为 { text: "Hello", width: 100 }
,则通过调用 newInstance()
生成的 generator
类的每个实例的 text
和 width
将分别设置为 "Hello"
和 100
。
默认值为 null.
ClassFactory | () | 构造函数 |
public function ClassFactory(generator:Class = null)
构造函数。
参数generator:Class (default = null ) —
newInstance() 方法根据工厂对象生成对象时使用的 Class。
|
newInstance | () | 方法 |
public function newInstance():*
使用由 properties
指定的属性创建 generator
类的新实例。
此方法实现 IFactory 接口的 newInstance()
方法。
* — 已创建的新实例。 |