舞台(Stage)、SystemManager、Application的层次关系

对于Flex的显示列表,从最顶级的舞台开始,到Application的层级关系是:

Stage  ->  SystemManager  ->  Application

Flex程序的生命就是上面这样的顺序展开的。

 

上面记述的关系,可以用下面的代码来简单验证:

 

<?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"
			   name="I'm Application" 
			   creationComplete="init()" >
	<fx:Script>
		<![CDATA[
			public function init():void{
				//this是Application
				txt.text = this.name +"\r\n";
				
				//application的父亲是SystemManager
				txt.text += this.parent +"\r\n";
				
				//SystemManager的父亲是Stage
				txt.text += this.parent.parent +"\r\n";
				
				//Stage是最顶级,没有父亲
				txt.text += this.parent.parent.parent +"\r\n";
			}
		]]>
	</fx:Script>
	
	<s:TextArea id="txt" x="53" y="59" width="526" height="254"/>
	
</s:Application>


执行结果:

I'm Application                                                                                                 //这是Application实例本身
[object _TestParent_mx_managers_SystemManager]                          //Application的父亲是SystemManager实例
[object Stage]                                                                                                   //SystemManager的父亲是Stage实例
null                                                                                                                     //Stage没有父亲,也就是说Stage就是最顶级的DisplayObject了

 

 

>引申知识点: 

(1). Stage是由FlashPlayer在执行swf文件的时候创建的实例。

(2). SystemManager类 隐性地被Flex框架所定义(在Appliction父类中被[Frame]元数据标签所定义)。

       FlexBuilder编译Application程序时候,自动把SystemManager类的AS代码编译到swf文件当中,充当程序入口类(也就是主类,FlashPlayer会找到入口类,并自动执行其构造函数)。Flex程序的生命实际是从SystemManager实例的构造函数开始的。

(3). Application就是上面代码中的<s:Appliction>标签所代表的代码,也就是我们编写的程序。

相关文章

一:display:flex布局display:flex是一种布局方式。它即可以...
1. flex设置元素垂直居中对齐在之前的一篇文章中记载过如何...
移动端开发知识点pc端软件和移动端apppc端软件是什么,有哪些...
最近挺忙的,准备考试,还有其他的事,没时间研究东西,快周...
display:flex;把容器设置为弹性盒模型(设置为弹性盒模型之后...
我在网页上运行了一个Flex应用程序,我想使用Command←组合键...