定义 createChildren() 方法

组件实现 createChildren() 方法,以便在组件中创建子对象(如其它组件)。调用 createClassObject()createObject(),而不在 createChildren() 方法中调用子对象的构造函数,来实例化组件的子对象。

最好在 createChildren() 方法中调用 size(),以确保所有子级最初都设置为合适的大小。此外,在 createChildren() 方法中调用 invalidate() 可以刷新屏幕。(有关详细信息,请参阅关于无效。)

createClassObject() 方法的语法如下:

createClassObject(className, instanceName, depth, initObject)

下表对参数进行说明:

参数

类型

说明

className

Object

类的名称。

instanceName

String

实例的名称。

depth

Number

实例的深度。

initObject

Object

包含初始化属性的对象。

要调用 createClassObject(),必须知道有哪些子级,这是因为必须在 createClassObject() 调用中指定对象的名称和类型以及所有初始化参数。

下面的示例调用 createClassObject() 创建一个在组件内使用的新 Button 对象:

up_mc.createClassObject(mx.controls.Button, "submit_btn", 1);

createClassObject() 调用中设置属性,方法是将这些属性作为 initObject 参数的一部分进行添加。下面的示例设置 label 属性的值:

form.createClassObject(mx.controls.CheckBox, "cb", 0, {label:"Check this"});

下面的示例创建 TextInput 和 SimpleButton 组件:

function createChildren():Void {
    if (text_mc == undefined)
        createClassObject(TextInput, "text_mc", 0, { preferredWidth: 80,     editable:false });
        text_mc.addEventListener("change", this);
        text_mc.addEventListener("focusOut", this);

    if (mode_mc == undefined)
        createClassObject(SimpleButton, "mode_mc", 1, { falseUpSkin: modeUpSkinName, falseOverSkin: modeOverSkinName, falseDownSkin: modeDownSkinName });
    mode_mc.addEventListener("click", this);
    size()
    invalidate()
}