?
- <?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>??
?
输出:
349?>>?InitExample0?preinitialize??
356?>>?canv1?preinitialize??
359?>>?btn1?preinitialize??
369?>>?btn1?initialize??
370?>>?canv1?initialize??
371?>>?btn2?preinitialize??
372?>>?btn2?initialize??
372?>>?InitExample0?initialize??
476?>>?btn1?creationComplete??
477?>>?btn1?updateComplete??
477?>>?canv1?creationComplete??
477?>>?canv1?updateComplete??
477?>>?btn2?creationComplete??
477?>>?btn2?updateComplete??
478?>>?InitExample0?creationComplete??
481?>>?InitExample0?updateComplete??
?
结论:
就单个组件而言,事件的抛出顺序是preinitialize,initialize,creationComplete
嵌套关系的两个组件(比如Canvas和button1),preinitialize先外后内,initialize和creationComplete先内后外。只是creationComplete要在下一次update才会发生。
平行关系的两个组件(比如Canvas和button2),按mxml内的顺序,只有前面组件initialize结束后,后面的组件才会抛出preinitialize。