技术分享 Flex 初始化时事件如何测试

开发 后端
本文向大家简单介绍一下Flex 初始化时的事件测试问题,Flex组件在建立的时候都会经历四个事件:preinitialize, initialize, creationComplete和updateComplete。

本文和大家重点讨论一下Flex 初始化时的事件测试,Flex组件在建立的时候都会经历四个事件:preinitialize, initialize, creationComplete和updateComplete(updateComplete事件在任何改动视觉的情况下都会发生,不是初始化时独有的)。

Flex 初始化时的事件测试

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

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

 

它的输出是:

  1. 1299 >> eventTest0 preinitialize  
  2.  
  3. 1307 >> canv1 preinitialize  
  4.  
  5. 1310 >> btn1 preinitialize  
  6.  
  7. 1318 >> btn1 initialize  
  8.  
  9. 1319 >> canv1 initialize  
  10.  
  11. 1320 >> btn2 preinitialize  
  12.  
  13. 1321 >> btn2 initialize  
  14.  
  15. 1321 >> eventTest0 initialize  
  16.  
  17. [SWF] G:\projects\eventTest\bin-debug\eventTest.swf – 588,
  18. 818 bytes after decompression  
  19.  
  20. 1387 >> btn1 creationComplete  
  21.  
  22. 1387 >> btn1 updateComplete  
  23.  
  24. 1387 >> canv1 creationComplete  
  25.  
  26. 1387 >> canv1 updateComplete  
  27.  
  28. 1388 >> btn2 creationComplete  
  29.  
  30. 1388 >> btn2 updateComplete  
  31.  
  32. 1388 >> eventTest0 creationComplete  
  33.  
  34. 1390 >> eventTest0 updateComplete  
  35.  

 看着有点混乱,不过仔细看看,可以把过程分成两个部分。很明显,所有的creationComplete和updateComplete发生在第二次update的时候,之前Flex组件只是做一些设置和计算的工作,并没有在画布上画任何东西。除此以外,还有这么一些规律:

◆就单个组件而言,Flex 初始化时事件的抛出顺序是preinitialize,initialize,creationComplete

◆嵌套关系的两个组件(比如Canvas和button1),preinitialize先外后内,initialize和creationComplete先内后外。只是creationComplete要在下一次update才会发生。
◆平行关系的两个组件(比如Canvas和button2),按mxml内的顺序,只有前面组件initialize结束后,后面的组件才会抛出preinitialize。

【编辑推荐】

  1. FlexBuilder快捷键使用说明
  2. Flex2.0Beta1新功能出炉
  3. 揭露Flex2.0的几大误区
  4. FlexBuilder3.0与Eclipse3.4的***结合
  5. 剖析Flex DataGrid分页控件的两种分页形式用法
责任编辑:佚名 来源: csdn.net
相关推荐

2010-07-28 12:41:18

Flex组件

2010-08-05 13:07:11

FlexJson

2010-08-11 14:47:54

Flex样式

2010-08-02 16:33:11

Flex Spring

2010-08-10 14:08:09

Flex嵌入字体

2010-08-09 15:41:13

Flex字体

2010-08-06 11:19:24

FlexPaperFlex

2010-07-30 10:37:23

Flex数据绑定

2010-08-04 13:30:11

Flex项目

2021-04-01 13:02:29

SpringBootJava代码

2010-08-11 10:01:45

FlexJavaFlamingo

2010-07-28 08:44:12

Flex2.0

2010-07-29 13:27:13

Flex右键菜单

2010-08-12 15:10:17

Flex4

2010-07-27 10:11:04

Flex4

2010-08-06 10:24:56

Flex事件分发

2010-08-09 12:47:00

Flex4beta

2009-09-17 15:39:56

C#数组初始化

2012-12-28 14:53:34

Android开发初始化窗体事件

2010-08-12 09:56:44

Flex内存优化
点赞
收藏

51CTO技术栈公众号