FLEX的初始化顺序
来源:互联网 发布:圣绣明玉染色数据 编辑:程序博客网 时间:2024/05/16 19:47
From:http://blog.csdn.net/dante_k7/archive/2009/06/18/4275381.aspx
FLEX组件在建立的时候都会经历四个事件:preinitialize , initialize , creationComplete 和 updateComplete(updateComplete事件在任何改动视觉的情况下都会发生,不是初始化时独有的)。
下面的例子检测在嵌套和平行的情况下,各个组件的事件抛出顺序。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
preinitialize="showEvent(event)"
initialize="showEvent(event)"
creationComplete="showEvent(event)"
updateComplete="showEvent(event)">
<mx:script>
<!--[CDATA[
import flash.utils.getTimer;
private function showEvent(event:Event):void {
trace(flash.utils.getTimer().toString()+" >> "+event.currentTarget.name+" "+event.type);
}
]]-->
</mx:script>
<mx:Canvas id="canv1"
preinitialize="showEvent(event)"
initialize="showEvent(event)"
creationComplete="showEvent(event)"
updateComplete="showEvent(event)">
<mx:Button id="btn1"
preinitialize="showEvent(event)"
initialize="showEvent(event)"
creationComplete="showEvent(event)"
updateComplete="showEvent(event)"/>
</mx:Canvas>
<mx:Button id="btn2"
preinitialize="showEvent(event)"
initialize="showEvent(event)"
creationComplete="showEvent(event)"
updateComplete="showEvent(event)"/>
</mx:Application>
上面的例子输出顺序是:
1299 >> eventTest0 preinitialize
1307 >> canv1 preinitialize
1310 >> btn1 preinitialize
1318 >> btn1 initialize
1319 >> canv1 initialize
1320 >> btn2 preinitialize
1321 >> btn2 initialize
1321 >> eventTest0 initialize
[SWF] G:\projects\eventTest\bin-debug\eventTest.swf - 588,818 bytes after decompression
1387 >> btn1 creationComplete
1387 >> btn1 updateComplete
1387 >> canv1 creationComplete
1387 >> canv1 updateComplete
1388 >> btn2 creationComplete
1388 >> btn2 updateComplete
1388 >> eventTest0 creationComplete
1390 >> eventTest0 updateComplete
看着有点混乱,不过仔细看看,可以把过程分成两个部分。
很明显,所有的creationComplete和updateComplete发生在第二次update的时候,之前flex组件只是做一些设置和计算的工作,并没有在画布上画任何东西。除此之外,还有这么一些规律:
* 就单个组件而言,事件的抛出顺序是preinitialize,initialize,creationComplete
* 嵌套关系的两个组件(比如Canvas和button1),preinitialize先外后内,initialize和creationComplete先内后外。只是creationComplete要在下一次update才会发生。
* 平行关系的两个组件(比如Canvas和button2),按mxml内的顺序,只有前面组件initialize结束后,后面的组件才会抛出preinitialize。
- FLEX的初始化顺序
- FLEX的初始化顺序
- Flex 程序的初始化顺序
- Flex 程序的初始化顺序
- Flex 程序的初始化顺序
- Flex应用的初始化顺序
- Flex Application 初始化事件的顺序
- Flex 应用的初始化顺序(转)
- Flex--flex组件初始化顺序
- Flex Application 初始化顺序
- Flex Application 初始化顺序
- Flex Application 初始化顺序
- Flex Application 初始化顺序
- Flex Application初始化顺序
- Flex Application初始化顺序
- flex程序初始化顺序
- Flex Application 初始化顺序
- Flex Application初始化顺序
- 关于configure的build,host,target编译选项的理解.
- Microsoft .NET PetShop 4.0 架构与技术分析(四)
- NOSQL-not only sql
- 一致性Hash算法(转)
- Microsoft .NET PetShop 4.0 架构与技术分析(三)
- FLEX的初始化顺序
- linux下的so、o、lo、a、la文件有什么区别
- 用Cocoa截取屏幕内容并保存为图片
- Microsoft .NET PetShop 4.0 架构与技术分析(二)
- oracle 报系统资源正忙
- el表达式加上引号后...
- Microsoft .NET PetShop 4.0 架构与技术分析(一)
- XSL转换问题,如何获取当前节点的父节点是否是最后一个父节点
- ZK ACL访问的一个小demo