[转]Flex组件的生命周期,初始化进程中的一些顺序
发布时间:2011-06-27 19:47:07 文章来源:www.iduyao.cn 采编人员:星星草
[转]Flex组件的生命周期,初始化过程中的一些顺序
写flex组件,了解UIComponent的生命周期(life cycle)很重要,尤其是初始化(initialization)的过程很复杂,贴个文件可以很容易看清这个顺序
文件如下:
package
{
import flash.events.Event;
import mx.core.UIComponent;
import mx.events.FlexEvent;
public class UILifeCycle extends UIComponent
{
public function UILifeCycle()
{
super();
trace("***[ constructor ]");
//flash.events.Event
this.addEventListener(Event.ADDED,onAdded);
this.addEventListener(Event.ADDED_TO_STAGE,onAddedToStage);
this.addEventListener(Event.REMOVED,onRemoved);
this.addEventListener(Event.REMOVED_FROM_STAGE,onRemovedFromStage);
//mx.events.FlexEvent;
this.addEventListener(FlexEvent.ADD,onAdd);
this.addEventListener(FlexEvent.REMOVE,onRemove);
this.addEventListener(FlexEvent.PREINITIALIZE,onPreinitialize);
this.addEventListener(FlexEvent.INITIALIZE,onInitialize);
this.addEventListener(FlexEvent.CREATION_COMPLETE,onCreationComplete);
}
//flash.events.Event
private function onAdded(eo:Event):void{trace(eo.toString())};
private function onAddedToStage(eo:Event):void{trace(eo.toString())};
private function onRemoved(eo:Event):void {trace(eo.toString())};
private function onRemovedFromStage(eo:Event):void {trace(eo.toString())};
//mx.events.FlexEvent;
private function onAdd(eo:FlexEvent):void {trace(eo.toString())};
private function onRemove(eo:FlexEvent):void{trace(eo.toString())};
private function onPreinitialize(eo:FlexEvent):void{trace(eo.toString())};
private function onInitialize(eo:FlexEvent):void{trace(eo.toString())};
private function onCreationComplete(eo:FlexEvent):void{trace(eo.toString())};
override protected function createChildren():void{trace("***[ createChildren ]")}
override protected function commitProperties():void{trace("***[ commitProperties ]")}
override protected function measure():void{trace("***[ measure ]")}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{trace("***[ updateDisplayList]")}
}
}
拖到舞台上发布就可以看到trace信息了
***[ constructor ]
[Event type="added" bubbles=true cancelable=false eventPhase=2]
[Event type="add" bubbles=false cancelable=false eventPhase=2]
[Event type="preinitialize" bubbles=false cancelable=false eventPhase=2]
***[ createChildren ]
[Event type="initialize" bubbles=false cancelable=false eventPhase=2]
***[ commitProperties ]
***[ measure ]
***[ updateDisplayList]
[Event type="creationComplete" bubbles=false cancelable=false eventPhase=2]
[Event type="addedToStage" bubbles=false cancelable=false eventPhase=2]
为了便于理解Flex里面组件的事件是如何发生的,我写了这么一些代码:
mxml:<mx:Something ...... addedToStage="trace('addedToStage')"
creationComplete="trace('creationComplete')"
enterFrame="if (!enterframeflag) {trace('enterFrame'); enterframeflag=true;}"
initialize="trace('initialize')"
preinitialize="trace('preinitialize')"
resize="trace('resize')"
show="trace('show')"/>然后再debug模式下运行,输出结果如下:
preinitialize
initialize
enterFrame
resize
[SWF] C:\Documents and Settings\polo\Desktop\study\testmenu\bin-debug\testmenu.swf - 877,825 bytes after decompression
creationComplete
addedToStage再运行一次:
preinitialize
initialize
[SWF] C:\Documents and Settings\polo\Desktop\study\testmenu\bin-debug\testmenu.swf - 877,825 bytes after decompression
enterFrame
resize
creationComplete
addedToStage[SWF]一行是解压过程,可以忽略不计。
剩下的内容就是组件事件的发生顺序了。
预初始化->初始化->进入桢->改变大小->创建结束->添加到场景。
而show事件没有发生。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
flex连接数据库编程
刚学了flex。用flex写了个程序,实现和数据库连接,但是老出问题,如下:
调用可能未定义的方法 deleteUser (通过 s...
-
AdvancedDataGrid 的节点对象怎么读取?
<?xml version= "1.0 " encoding= "utf-8 "?>
<mx:Application xmlns:mx=...
-
<mx:SWFLoader 加事件后卸载不干净
<mx:SWFLoader id="tb" source="topbar.swf" complete="tb_completeHandler(event)"/>
public...
-
flashDevelop 项目错误
我创建了一个Flex项目,该项目只包含一个文件,名为Main.mxml。
XML code
<?xml version="1.0" encoding="u...
-
类型1067:Array 类型值的隐式强制指令的目标是非相关类型
新下载了Flash Builder 4来学习flex。按照网上的一个例子写,但出现上面...
-
Flex导出Excel怎么做?要详细代码和说明。谢谢
如题。
------解决方案--------------------
给你一个网上的例子,希望对你有帮助,不...
-
flex google map问题!
最近在做flex地图,我看网上说的属性我这里都打不出来,是不是sdk版本不同啊。
我实在官网下的,是map_flex_1_20....
-
flex4.0的spark控件不能被qtp10.00的对象查看器识别
各位大侠:
我刚才qtp做flex的自动化测试,使用的flash builder是4.0版本...
-
Channel definition, mx.messaging.channels.RTMPChannel, can not be found.
我从CSDN上下载了一个FLEX+J2EE的教程,但是一步一步...
-
flex 控制键盘的响应间隔
如有个keyboaedevent的mousedown监听,里面就一句代码 trace("a");
怎么控制键盘按下后输出a的时间间隔
...