加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

FLEX的初始化顺序

发布时间:2020-12-15 01:06:41 所属栏目:百科 来源:网络整理
导读:?From:http://blog.csdn.net/dante_k7/archive/2009/06/18/4275381.aspx FLEX 组件 在建立的时候都会经历四个 事件 :preinitialize,initialize,creationComplete 和 updateComplete(updateComplete事件在任何改动视觉的情况下都会发生,不是初始化时独有

?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:projectseventTestbin-debugeventTest.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。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读