flex的组件的初始化顺序原理及实例

组件的初始化顺序:(前言:先执行script中的成员变量,再开始初始化组件)

preinitialize
在所有的初始化之前触发,没有子组件的定义,但是可以引用组件的变量.

initialize
当所有子组件生成完成后触发,在这个时间点还没有组件被渲染出来.但还未对这些子组件进行布局.

creationComplete
组件定义完成并已经在显示列表.

applicationComplete
所有的组件初始化完成并显示;只适用于Application组件。

先考虑四个关键字,在考虑组件的内外层关系。
preinitialize按组件从外向内执行。
initialize、creationComplete按组件从内向外执行。
某组件的preinitialize事件发生后其id才能被其他的组件使用(即id的构造从外向里)。
某组件的initialize事件发生后才给此组件的其他属性赋值。


看下面的例子:输出结果为:
===null===
呵呵呵1
a1
a2
+++null+++
a3
***ss.ApplicationSkin2._ApplicationSkin_Group1.contentGroup.Panel5.labelID***
b3
===ss.ApplicationSkin2._ApplicationSkin_Group1.contentGroup.Panel5.labelID===
呵呵呵2
b2
b1
c3
c2
c1
d1


<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo"
minWidth="1024" minHeight="768"
preinitialize="a1();" initialize="b1();" creationComplete="c1();" applicationComplete="d1();">

<fx:Script>
<![CDATA[

private var i:int = 0;
private function a1():void{
trace("a1");
}
private function a2():void{
trace("a2");
trace("+++" + labelID + "+++");
}
private function a3():void{
trace("a3");
trace("***" + labelID + "***");
}
private function b3():void{
trace("b3");
}
private function b2():void{
trace("b2");
}
private function b1():void{
trace("b1");
}
private function c3():void{
trace("c3");
}
private function c2():void{
trace("c2");
}
private function c1():void{
trace("c1");
}
private function d1():void{
trace("d1");
}
public function text3():String{
trace("==="+labelID+"===");
i++;
trace("呵呵呵" + i);
return "哈哈" + i;
}

]]>
</fx:Script>

<mx:Panel preinitialize="a2();" initialize="b2();" creationComplete="c2();" >
<mx:Label id="labelID" text="{text3()}" preinitialize="a3();" initialize="b3();" creationComplete="c3();"/>
</mx:Panel>

</s:Application>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值