快捷搜索:

Flex应用程序生命周期

理解Flex利用法度榜样的生命周期

Flex利用的根是SystemManger,它是flash.display.MovieClip的子类,一个Flash Player显示工具类型。SystemManager有两个帧,第一帧是用来显示利用载入的进度唆使,这个帧是轻量的,以是它险些能急速下载和运行。第二帧就是利用本身。

当一个Flex利用的SystemManager实例进入到第二帧,它创建一个主利用的实例。SystemManager实例有一个application属性,在它第二帧创建利用工具之前,它是null的。在那个点,利用实例被初始化并运行它自己的启动处置惩罚。意指所有的利用工具内部的生命周期事故发生。内部的生命周期事故为:

preinitialize利用被初始化,但仍没创建任何子组件。

initialize利用已创建子组件,但极结构这些组件。

creationComplete利用已被初始实例化完成,并已结构所有的组件。

一旦利用完成它的内部启动处置惩罚,它经由过程分发applicationComplete事故看护SystemManager。从这个点之后,利用筹备运行了。

SystemManager也治理以是被在前台显示的内容,即所有的pop ups,光标,对象提示。

SystmeManager 有一个toplevelSystemManager的属性,引用到当时在FlashPlayer里运行的根级的SystemManager实例。当一个利用是作为FlashPlayer的主利用被载入的,这个属性老是自引用的,然而,当一个利用是被另一个利用载入的,这个被载入利用的 SystemManager工具的topLevelSystemManager则是引用到父利用。

虽然你不常要引用SystemManager, 但必要时可以做。所有的UIComponents(包括Application)的子类都有一个systemManager属性引用到 application的SystemManager。开拓者常爱好应用SystemManager来监听利用中任何显示工具分发的事故。当事故冒泡时,有时机操控(handle)事故的着末的工具就是SystemManager.

FlashPlayer和框架的不合

FlasyPlayer 是Flash和Flex利用的运行情况。它能运行.swf文件。该文件包孕这些字节代码:能与FlashPlayer通信,敕令它履行载入图像,画图,提议http哀求等等操作。Flash和Flex利用只能做那些FlashPlayer容许他们做的,FlashPlayer供给可履行的API.

利用只包孕敕令,而FlashPlayer则认真运行这些敕令,以是Flash和Flex利用的不合不是内容,而是如何创建内容。

应用框架的价值是.swf文件尺寸的增长,这与用纯AS写的项目形成反差。由于当你不用Flex框架,你是直接引用FlashPlayer的主类,这些类已经在FlashPlayer中了,他们不需被编译进.swf文件。在用Flex框架时,简单的增添一个组件也会增添很多的文件尺寸,由于它必要编译的一个类或一个类库并不是FlashPlayer的一部分。

若类的包因此flash.开首,它是FlashPlayer的一部分;

若类的包因此mx.开关,它是Flex框架的一部分;

MXML标签险些老是(少数的例外)对应Flex框架类。

Bootstarapping Flex Applications

一个Flex利用的根并不是一个Application工具,实际上一个Application标签创建的是一个mx.managers.SystemManager工具。

flash.display.MovieClip是一个显示工具,容许你对光阴轴编程。但在Flex利用中并不怎用光阴轴,由于没有编程措施增添一个帧到到个光阴轴。但光阴轴和帧仍是SystmeManager的基础部分之一。

由于没有措施编程的增添帧,险些Flex利用中的所有显示工具只由一个帧组成,但SystemManager是个例外,它有两个帧,一个用于预装载,主利用工具存在第二帧中。一样平常环境下,你不需知道这些,但在至少两个环境下你需懂得它:在一个Flex利用中载入另一个Flex利用;定制预装载器。

Loading One Flex Application into Another Flex Application

当一个SWFLoader载入一个Flex 利用,这个SWFLoader工具的contern属性供给了对被载入利用的根的引用,也等于被载入利用的SystemManager工具。这个 SystemManagr类定义一个application属性可引用Application工具。但这个属性在Flex 利用被载入时照样null,在第二帧之前,它是不会被创建的。那要如何引用它呢?有个优雅的措施可以办理这个问题:

当一个SWFLoader载入和初始化了内容,它分发init事故,在init的事故处置惩罚里,你能够引用被载入内容的SystemManager了,此时你就增添一个事故侦听器,监听这个SystemManager的applicationComplete事故。而在这个applicationComplete的事故触发之后,在它的处置惩罚里,你就可以引用被进入内容的Application工具了。

例子:

要被载入的利用:B.MXML

父利用:

您可能还会对下面的文章感兴趣: