Posted on 2012-10-17 17:05
谁用我名字啦? 阅读(246)
评论(0) 编辑 收藏 所属分类:
flex学习之路
Flex应用启动的事件序列(1)
Flex的事件可以分为系统事件和用户事件。
由用户操作触发的事件,就是用户事件。Flex的用户事件遵循了W3C DOM Level3(W3C文档对象模型Level3)事件规范。具体可参见http://www.w3.org/TR/DOM-Level-3-Events/ 。用户事件是应用中最常见的事件类型,比如鼠标点击、键盘输入等都属于用户事件。除了用户直接触发的事件,在Flex应用运行过程中,Flex架构本身也会自动触发一些事件,也就是所谓的系统事件。在信号灯应用中,creationComplete事件是系统事件,而MouseEvent.CLICK事件则是用户事件。
所有的Flex可视化组件都继承自基类mx.core.UIComponent,同时也继承了UIComponent的系统事件。当Flex应用启动时,会触发一系列事件,这些事件表明了组件在启动过程中的不同时间点,比如被创建、布局完成或者在屏幕上完成绘制等。这些启动序列事件帮助开发者更好的监控并控制应用运行生命周期的各个环节。实际上,这"一系列"事件都由一个事件类mx.events. FlexEvent表示。FlexEvent类的不同类型反映了启动过程中不同阶段发生的事件。
在Flex应用中,容器和组件启动时的事件序列不同。
在组件所属的容器内,组件被实例化、加入到父容器的显示列表中,然后设置外观尺寸,最终完成容器中的布局,并被绘制出来。图3-1显示了组件的启动事件序列:
图3-1
由于容器包含了子组件,因此容器启动时的序列不同于单一组件,图3-2显示了包含子组件的容器的启动过程。不仅容器本身要完成创建的全过程,所包含的子组件也要依次序地完成自身的创建。当然如果容器中嵌入了子容器,其启动过程与此类似。
图3-2
Flex应用启动的事件序列(2)
在所有组件和容器被创建并最终绘制在屏幕上之后,Application对象将触发applicationComplete事件,该事件类型标志着应用启动完毕,是应用启动时触发的最后一个事件。
图3-2中描述的部分启动序列事件解释如下:
preinitialize:在初始化之前触发,对于容器来说,所有子组件尚未定义。一般来说,不会在该事件触发时配置组件;
initialize:当组件或容器完成构造,并设置初始化属性后触发。在这个阶段,对于容器,其所有的子组件的preinitialize事件已经触发,但是这些子组件还没有完成布局;
creationComplete:当应用或组件(包括所有子组件)完成构造、布局和绘制可见时触发。当creationComplete事件发生时,组件已经被创建出来,因此开发者也能够访问同组件相关的属性,比如height、width等属性。开发者通常使用这个事件来对应用进行初始化配置。比如为某些应用组件添加侦听器,调用Web服务等;
applicationComplete:所有的组件初始化完成并显示。