• FLEX程序启动事件顺序


    1. preinitialize:应用程序application已实例化,但此时还未创建任何相关的孩子组件
    2. initialize:此时,创建了相应的孩子组件,但还未对这些子组件进行布局
    3. creationComplete:应用程序application完成全部实例化,并完成所有子组件的布局
    4. addedToStage:将显示对象直接添加到舞台显示列表
    5. applicationComplete:上面事件的完成,表明application内部启动的整个进程完成,接下来便会通知SystemManager派发applicationComplete事件。此时,启动程序启动完成并准备运行。

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" 
    	preinitialize="init1()" 
    	initialize="init2()" 
    	creationComplete="init3()"
    	addedToStage="init4()"
    	applicationComplete="init5()">
    	<mx:Script>
    		<![CDATA[
    			private function init1():void
    			{
    				trace("1");
    			}
    			private function init2():void
    			{
    				trace("2");
    			}
    			private function init3():void
    			{
    				trace("3");
    			}
    			private function init4():void
    			{
    				trace("4");
    			}
    			private function init5():void
    			{
    				trace("5");
    			}
    		]]>
    	</mx:Script>
    </mx:Application>
    

      Flash包含的是一个时间线上的多个帧, 而Flex的SWF只包含2个帧. SystemManager, Preloader, DownloadProgressBar和少量工具类都在第一帧, 剩下的包括应用代码/ 内嵌资源全都在第二帧中. 当Flash Player下载下载SWF时, 只要接收到第一帧内足够的数据, 就会实例化SystemManager, 由它来创建Preloader, 然后创建DownloadProgressBar, 这两个对象会察看剩余字节的传输过程. 当第一帧的所有字节传输完毕后, SystemManager发送enterFrame到第二帧, 然后是其他事件. 最后Application对象派发applicationComplete事件.

    SystemManager是Flex应用的主控者, 它控制着应用窗口, Application实例, 弹出窗口, cursors, 并管理着ApplicationDomain中的类. SystemManager是FlashPlayer实例化的第一个类, 它存储了主应用窗口的大小和位置信息, 保存其子组件比如:浮动弹出窗口和模态窗口的痕迹. 通过SystemManager可以获得内嵌字体,样式和document对象.
    自定义的可视化组件(UIComponent的子类)只有在调用过addChild()后, 才会有一个SystemManager赋给他们, 之前是Null. 所以在自定义可视化组件的构造函数中不要使用SystemManager.
    通常, Application对象创建时, 发生如下事件:

    1. 实例化Application对象
    2. 初始化Application.systemManager
    3. Application在初始化过程之前, 派发预初始化事件.
    4. 调用createChild(). 此时, 所有应用组件被创建, 所有组件的createChild()被调用.
    5. Application派发初始化事件, 表明所有的组件初始化完毕.
    6. 派发creationComplete事件(
    creationComplete)
    7. Application对象添加到显示列表中(addedToStage)
    8. 派发applicationComplete事件(applicationComplete)

    大多数情况下, 我们使用<mx:Application>来创建application对象, 但如果使用ActionScript来创建的话, 那么建议不要在application的构造函数中创建组件, 推荐在crateChildren函数中, 主要是从性能方面考虑.
    Flex 是一个事件驱动的编程模型, 任何事情的发生, 其背后必然存在一个事件. 而开发者第一次看到MXML时, 很难体会到一个Xml标记的应用的事件流和实例化的生命周期. 这个对于HTML和Flash的开发者尤其会感到困惑, 因为其熟悉的方式与Flex的一点也不相似. HTML的实例化是从上到下的, Flash的执行是从Frame0开始一帧帧运行的. 而Flex则又有不同。

    http://blog.csdn.net/lihua2915/article/details/5950672

  • 相关阅读:
    多态
    没有抽象方法的抽象类有什么意义
    抽象类继承(雇员练习)
    怎样在win7中 安装Tomcat7.0
    继承训练
    Java的接口和抽象类
    jQuery插件的学习
    jQuery学习之路-A
    android之路-android事件处理-OnTouchListener
    丢弃的东西,还能否找回?
  • 原文地址:https://www.cnblogs.com/mzbdadou/p/2119191.html
Copyright © 2020-2023  润新知