| 包 | mx.states |
| 类 | public class AddChild |
| 继承 | AddChild Object |
| 实现 | IOverride |
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 语法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
另请参见
| 属性 | 定义方 | ||
|---|---|---|---|
![]() | constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | |
| creationPolicy : String 该子级的创建策略。 | AddChild | ||
| position : String 显示列表中子项的位置,随 relativeTo 属性指定的对象而变化。 | AddChild | ||
![]() | prototype : Object [静态]
对类或函数对象的原型对象的引用。 | Object | |
| relativeTo : UIComponent 相对于其添加子项的对象。 | AddChild | ||
| target : DisplayObject 要添加的子级。 | AddChild | ||
| targetFactory : IDeferredInstance 创建子级的 factory。 | AddChild | ||
| 方法 | 定义方 | ||
|---|---|---|---|
构造函数。 | AddChild | ||
应用覆盖。 | AddChild | ||
从 factory 创建子实例。 | AddChild | ||
![]() |
指示对象是否已经定义了指定的属性。 | Object | |
初始化覆盖。 | AddChild | ||
![]() |
指示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | |
![]() |
指示指定的属性是否存在、是否可枚举。 | Object | |
删除覆盖。 | AddChild | ||
![]() |
设置循环操作动态属性的可用性。 | Object | |
![]() |
返回指定对象的字符串表示形式。 | Object | |
![]() |
返回指定对象的原始值。 | 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 — 包含此覆盖的状态对象的父级。如果未指定明确目标,覆盖应使用它作为其目标。 |
<?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>