Flex 初始化时的事件测试

flex组件在建立的时候都会经历四个事件:preinitialize, initialize, creationComplete和updateComplete(updateComplete事件在任何改动视觉的情况下都会发生,不是初始化时独有的)。我这里有个例子来检测在嵌套和平行的情况下,测试各个组件的事件抛出顺序。

 

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"   
  3.     preinitialize="showEvent(event)"   
  4.     initialize="showEvent(event)"   
  5.     creationComplete="showEvent(event)"   
  6.     updateComplete="showEvent(event)">  
  7.    
  8.     <mx:Script>  
  9.         <!--[CDATA[  
  10.             import flash.utils.getTimer;  
  11.             private function showEvent(event:Event):void  
  12.             {  
  13.                 trace(flash.utils.getTimer().toString()+" >> "  
  14.                 +event.currentTarget.name+" "+event.type);  
  15.             }  
  16.         ]]-->  
  17.     </mx:Script>  
  18.    
  19.     <mx:Canvas id="canv1"  
  20.         preinitialize="showEvent(event)"   
  21.         initialize="showEvent(event)"   
  22.         creationComplete="showEvent(event)"   
  23.         updateComplete="showEvent(event)">  
  24.    
  25.         <mx:Button id="btn1"  
  26.             preinitialize="showEvent(event)"   
  27.             initialize="showEvent(event)"   
  28.             creationComplete="showEvent(event)"   
  29.             updateComplete="showEvent(event)"/>  
  30.     </mx:Canvas>  
  31.    
  32.     <mx:Button id="btn2"  
  33.             preinitialize="showEvent(event)"   
  34.             initialize="showEvent(event)"   
  35.             creationComplete="showEvent(event)"   
  36.             updateComplete="showEvent(event)"/>  
  37.    
  38. </mx:Application>  

 

输出:

  1. 349 >> InitExample0 preinitialize  
  2. 356 >> canv1 preinitialize  
  3. 359 >> btn1 preinitialize  
  4. 369 >> btn1 initialize  
  5. 370 >> canv1 initialize  
  6. 371 >> btn2 preinitialize  
  7. 372 >> btn2 initialize  
  8. 372 >> InitExample0 initialize  
  9. 476 >> btn1 creationComplete  
  10. 477 >> btn1 updateComplete  
  11. 477 >> canv1 creationComplete  
  12. 477 >> canv1 updateComplete  
  13. 477 >> btn2 creationComplete  
  14. 477 >> btn2 updateComplete  
  15. 478 >> InitExample0 creationComplete  
  16. 481 >> InitExample0 updateComplete  

 

结论:

  • 就单个组件而言,事件的抛出顺序是preinitialize,initialize,creationComplete
  • 嵌套关系的两个组件(比如Canvas和button1),preinitialize先外后内,initialize和creationComplete先内后外。只是creationComplete要在下一次update才会发生。
  • 平行关系的两个组件(比如Canvas和button2),按mxml内的顺序,只有前面组件initialize结束后,后面的组件才会抛出preinitialize。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值