mx.states
public class AddChild
继承AddChild Inheritance Object
实现 IOverride

AddChild 类将子显示对象(如组件)作为视图状态的一部分添加到容器。可以在 State 类的 overrides 属性中使用该类。可使用 creationPolicy 属性来指定在应用程序启动时还是当您更改到某一视图状态时创建子级。

在子级添加到容器之前,子级不会调度 creationComplete 事件。例如,以下代码在视图状态更改过程中添加 Button 控件。

<mx:AddChild relativeTo="{v1}">
      <mx:Button id="b0" label="New Button"/>
  </mx:AddChild>

在前面的示例中,在您更改状态以及 Button 控件被添加到容器之前,Button 控件不调度 creationComplete 事件。如果 AddChild 类同时定义了 Button 和容器(如 Canvas 容器),则 Button 控件将在其创建之后调度 creationComplete 事件。例如,如果 creationPolicy 属性设置为 all,Button 控件将在应用程序启动时调度该事件。如果 creationPolicy 属性设置为 auto,Button 控件将在您更改到视图状态时调度事件。

MXML 语法expanded隐藏 MXML 语法

The <mx:AddChild> tag has the following attributes:

  <mx:AddChild
  Properties
  target="null"
  targetFactory="null"
  creationPolicy="auto"
  position="lastChild"
  relativeTo="parent of the State object"
  />
  

默认 MXML 属性targetFactory

查看示例

另请参见

mx.states.State
mx.states.RemoveChild
mx.states.Transition
mx.effects.AddChildAction


公共属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  creationPolicy : String
该子级的创建策略。
AddChild
  position : String
显示列表中子项的位置,随 relativeTo 属性指定的对象而变化。
AddChild
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  relativeTo : UIComponent
相对于其添加子项的对象。
AddChild
  target : DisplayObject
要添加的子级。
AddChild
  targetFactory : IDeferredInstance
创建子级的 factory。
AddChild
公共方法
 方法定义方
  
AddChild(relativeTo:UIComponent = null, target:DisplayObject = null, position:String = "lastChild")
构造函数。
AddChild
  
应用覆盖。
AddChild
  
从 factory 创建子实例。
AddChild
 Inherited
指示对象是否已经定义了指定的属性。
Object
  
初始化覆盖。
AddChild
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
  
删除覆盖。
AddChild
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
属性详细信息
creationPolicy属性
creationPolicy:String  [读写]

该子级的创建策略。该属性确定 targetFactory 将在何时创建该子级的实例。仅当指定 targetFactory 属性时,Flex 才使用该属性。以下是有效值:

意义
auto (默认)在第一次需要实例时创建实例。
all 在应用程序启动时创建实例。
none 不自动创建实例。必须调用 createInstance() 方法来创建该实例。

默认值为 "auto".



实现
    public function get creationPolicy():String
    public function set creationPolicy(value:String):void
position属性 
public var position:String

显示列表中子项的位置,随 relativeTo 属性指定的对象而变化。有效值为 "before""after""firstChild""lastChild"

默认值为 "lastChild".

relativeTo属性 
public var relativeTo:UIComponent

相对于其添加子项的对象。该属性与 position 属性结合使用。此属性是可选的,如果省略此属性,Flex 将使用 State 对象的直接父级,即具有 states 属性的组件,或指定 State 对象的 <mx:states> 标签。

target属性 
target:DisplayObject  [读写]

要添加的子级。如果设置了该属性,将在应用程序启动时创建子实例。设置该属性等同于设置 targetFactory 属性并将 creationPolicy 设置为 "all"

如果设置了 targetFactory 属性,则不要设置该属性。



实现
    public function get target():DisplayObject
    public function set target(value:DisplayObject):void
targetFactory属性 
targetFactory:IDeferredInstance  [读写]

创建子级的 factory。可以指定以下任一项目:

如果设置了该属性,子级将在由 creationPolicy 属性确定的时间实例化。

如果设置了 target 属性,则不要设置该属性。该属性是 AddChild 类默认属性。设置该属性并将 creationPolicy 设置为“all”等同于设置 target 属性。



实现
    public function get targetFactory():IDeferredInstance
    public function set targetFactory(value:IDeferredInstance):void
构造函数详细信息
AddChild()构造函数
public function AddChild(relativeTo:UIComponent = null, target:DisplayObject = null, position:String = "lastChild")

构造函数。

参数
relativeTo:UIComponent (default = null) — 相对于添加子项的组件。
 
target:DisplayObject (default = null) — 子对象。所有 Flex 组件都是 DisplayObject 类的子类。
 
position:String (default = "lastChild")target 显示列表中相对于 relativeTo 组件的位置。必须是以下中的一项:“firstChild”、“lastChild”、“before”或“after”。
方法详细信息
apply()方法
public function apply(parent:UIComponent):void

应用覆盖。Flex 将保留原始值,以便以后可以在 remove() 方法中恢复该值。

当进入状态时自动调用此方法。不应直接对其进行调用。

参数

parent:UIComponent — 包含此覆盖的状态对象的父级。如果未指定明确目标,覆盖应使用它作为其目标。

createInstance()方法 
public function createInstance():void

从 factory 创建子实例。必须在仅当指定 targetFactory 属性并且 creationPolicy 的值为 "none" 时使用此方法。如果 creationPolicy 属性值为 "auto""all",Flex 将自动调用此方法。如果多次调用此方法,仅在第一次调用时创建子实例。

initialize()方法 
public function initialize():void

初始化覆盖。Flex 在第一次调用 apply() 方法之前调用此方法,因此将覆盖的一次性初始化代码放在此方法中。

当进入状态时,Flex 自动调用此方法。不应直接对其进行调用。

remove()方法 
public function remove(parent:UIComponent):void

删除覆盖。在 apply() 方法中记住的值将被恢复。

当进入状态时自动调用此方法。不应直接对其进行调用。

参数

parent:UIComponent — 包含此覆盖的状态对象的父级。如果未指定明确目标,覆盖应使用它作为其目标。

示例 如何使用示例
StatesExample.mxml
<?xml version="1.0" ?>
<!-- Simple example to demonstrate the States class. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

    <!-- Define one view state, in addition to the base state.-->
    <mx:states>
        <mx:State name="Register">
            <mx:AddChild relativeTo="{loginForm}" position="lastChild">
                <mx:target>
                    <mx:FormItem id="confirm" label="Confirm:">
                        <mx:TextInput/>
                    </mx:FormItem>
                </mx:target>
            </mx:AddChild>
            <mx:SetProperty target="{loginPanel}" name="title" value="Register"/>
            <mx:SetProperty target="{loginButton}" name="label" value="Register"/>
            <mx:SetStyle target="{loginButton}" 
                name="color" value="blue"/>
            <mx:RemoveChild target="{registerLink}"/>
            <mx:AddChild relativeTo="{spacer1}" position="before">
                <mx:target>
                    <mx:LinkButton id="loginLink" label="Return to Login" click="currentState=''"/>
                </mx:target>
            </mx:AddChild>
        </mx:State>
    </mx:states>

    <!-- Define a Panel container that defines the login form.-->
    <mx:Panel title="Login" id="loginPanel" 
        horizontalScrollPolicy="off" verticalScrollPolicy="off"
        paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom="10">

        <mx:Text width="100%" color="blue"
            text="Click the 'Need to Register?' link to change state. Click the 'Return to Login' link to return to the base state."/>

        <mx:Form id="loginForm" >
            <mx:FormItem label="Username:">
                <mx:TextInput/>
            </mx:FormItem>
            <mx:FormItem label="Password:">
                <mx:TextInput/>
            </mx:FormItem>
        </mx:Form>
        <mx:ControlBar>
            <mx:LinkButton id="registerLink"  label="Need to Register?"
                click="currentState='Register'"/>
            <mx:Spacer width="100%" id="spacer1"/>
            <mx:Button label="Login" id="loginButton"/>
        </mx:ControlBar>
    </mx:Panel>
</mx:Application>