Flex程序启动过程再探秘: (2)启动过程 未完。。。。。
2012-03-12 18:06
120 查看
>>事前准备
(1) 构建名为test的Flex Project。
主程序test.mxml的代码如下:
(2) 添加编译器参数: -keep-generated-actionscript=true
(3) 编译该Flex Project。
通过上述步骤,可在bin-debug目录下获得generated目录,其下是编译器自动生成的中间源代码文件。我们在分析Flex程序启动过程的时候,需要用到它们。
>>Flex程序启动过程(需要参照源代码)
1。FlashPlayer自动实例化类 _test_mx_managers_SystemManager,其构造函数被自动调用。
(1) _test_mx_managers_SystemManager的构造函数调用了父类mx_managers_SystemManager的构造函数。
_test_mx_managers_SystemManager类是mx_managers_SystemManager的子类,它由Flex编译器在编译期间根据我们设置的编译器参数和静态模板动态生成。
2。父类mx_managers_SystemManager的构造函数
(1) 调用stop()函数,阻止进入下一桢。
(2) 设置事件监听函数initHandler,对Event.INIT事件进行监听。然后程序什么都不做,等待Event.INIT事件的发生。
关于Event.INIT事件,请参考 http://blog.csdn.net/tiangej/article/details/7331119
3。initHandler函数执行(Event.INIT事件发生)
(1) 设置事件监听函数docFrameListener,对Event.ENTER_FRAME事件进行监听(/article/7901521.html)。
(2) 调用initialize()函数。
(注意:在此后的流程型代码没有执行完毕之前,不会发生Event.ENTER_FRAME事件。这是FlashPlayer弹性跑道模型决定的)
4。initialize()函数
(1) 创建进度条实例: preloader = new Preloader();
(2) 设置事件监听函数,用来监听加载事件,加载的对象包括自身主swf文件、Adobe签名的RSL、自定义RSL等。
主要被监听的事件和监听函数是:
Event.COMPLETE ---------- preloader_completeHandler() 自身主swf文件加载完毕后发出该事件(其后还要加载RSL)
FlexEvent.PRELOADER_DONE ---------- preloader_preloaderDoneHandler() 加载对象全部加载完毕后发出该事件。在监听函数中要移除进度条实例,并实例化Application。
(3) 获得加载对象(RSL)列表
/article/7901540.html
(4) 开始加载
(1) 构建名为test的Flex Project。
主程序test.mxml的代码如下:
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> </s:Application>
(2) 添加编译器参数: -keep-generated-actionscript=true
(3) 编译该Flex Project。
通过上述步骤,可在bin-debug目录下获得generated目录,其下是编译器自动生成的中间源代码文件。我们在分析Flex程序启动过程的时候,需要用到它们。
components_properties.as controls_properties.as core_properties.as effects_properties.as layout_properties.as skins_properties.as styles_properties.as test-generated.as test-interface.as _class_embed_css_Assets_swf_1746260725_mx_skins_cursor_BusyCursor_11959375.as _test_FlexInit-generated.as _test_mx_managers_SystemManager-generated.as _test_Styles.as
>>Flex程序启动过程(需要参照源代码)
1。FlashPlayer自动实例化类 _test_mx_managers_SystemManager,其构造函数被自动调用。
(1) _test_mx_managers_SystemManager的构造函数调用了父类mx_managers_SystemManager的构造函数。
_test_mx_managers_SystemManager类是mx_managers_SystemManager的子类,它由Flex编译器在编译期间根据我们设置的编译器参数和静态模板动态生成。
2。父类mx_managers_SystemManager的构造函数
(1) 调用stop()函数,阻止进入下一桢。
(2) 设置事件监听函数initHandler,对Event.INIT事件进行监听。然后程序什么都不做,等待Event.INIT事件的发生。
关于Event.INIT事件,请参考 http://blog.csdn.net/tiangej/article/details/7331119
3。initHandler函数执行(Event.INIT事件发生)
(1) 设置事件监听函数docFrameListener,对Event.ENTER_FRAME事件进行监听(/article/7901521.html)。
(2) 调用initialize()函数。
(注意:在此后的流程型代码没有执行完毕之前,不会发生Event.ENTER_FRAME事件。这是FlashPlayer弹性跑道模型决定的)
4。initialize()函数
(1) 创建进度条实例: preloader = new Preloader();
(2) 设置事件监听函数,用来监听加载事件,加载的对象包括自身主swf文件、Adobe签名的RSL、自定义RSL等。
主要被监听的事件和监听函数是:
Event.COMPLETE ---------- preloader_completeHandler() 自身主swf文件加载完毕后发出该事件(其后还要加载RSL)
FlexEvent.PRELOADER_DONE ---------- preloader_preloaderDoneHandler() 加载对象全部加载完毕后发出该事件。在监听函数中要移除进度条实例,并实例化Application。
(3) 获得加载对象(RSL)列表
var rsls:Array = info()["rsls"]; var cdRsls:Array = info()["cdRsls"];
/article/7901540.html
(4) 开始加载
preloader.initialize(......)
相关文章推荐
- Flex程序启动过程再探秘: (1)基础知识
- Windows中.exe程序的启动过程和C/C++运行时库<转载>
- UIApplication和程序启动过程
- OGRE启动过程详解(OGRE HelloWorld程序原理解析)
- MFC程序的启动过程与相关函数执行顺序
- iOS程序的启动过程-UIWindow
- Delphi Android程序启动过程
- 程序编译过程与软件启动过程
- 程序启动的完整过程
- Info.plist和pch文件的作用,UIApplication,iOS程序的启动过程,AppDelegate 方法解释,UIWindow,生命周期方法
- 深入剖析 MFC程序的启动过程
- iOS程序启动过程笔记
- Windows启动过程加载程序问题
- MFC程序的启动过程与相关函数执行顺序
- 关于在android程序执行过程中使用Intent启动另一个活动后,同个方法未执行的代码是否会继续执行。
- Delphi Android程序启动过程
- 飞鸽传书源码分析-程序启动过程
- 安装MQ6.0过程中报无法启动程序“gsk7win.exe'[AMQ4733]
- OGRE启动过程详解(OGRE HelloWorld程序原理解析)
- WIN32程序启动过程