Stage,MainTimeline和root

Stage:

Stage→DisplayObjectContainer→InteractiveObject→DisplayObject→EventDispatcher→Object

Stage 类代表主绘图区。  

对于在浏览器中(使用 Flash® Player)运行的 SWF 内容,Stage 表示显示 Flash 内容的整个区域。对于在 AIR 中运行的内容,每个 NativeWindow 对象都有一个相应的 Stage 对象。

无法以全局方式访问 Stage 对象。而是需要利用 DisplayObject 实例的 stage 属性进行访问。

stage(DisplayObject的属性):

显示对象的舞台。Flash 应用程序只有一个 Stage 对象。例如,您可以创建多个显示对象并加载到显示列表中,每个显示对象的 stage 属性是指相同的 Stage 对象(即使显示对象属于已加载的 SWF 文件)。

如果显示对象未添加到显示列表,则其 stage 属性会设置为 null

MainTimeline:

MainTimeline→MovieClip→Sprite→DisplayObjectContainer→InteractiveObject→DisplayObject→EventDispatcher→Object

MovieClip的子类,隐藏类,在没有设置外部文档类的情况下自动创建一个对象,作为主时间轴。

root(DisplayObject的属性):

对于加载的 SWF 文件中的显示对象,root 属性是此 SWF 文件所表示的显示列表树结构部分中的顶级显示对象。对于代表已加载图像文件的位图对象,root 属性就是位图对象本身。对于第一个加载的 SWF 文件的主类的实例,root 属性就是显示对象本身。Stage 对象的 root 属性是 Stage 对象本身。对于任何未添加到显示列表的显示对象,root 属性设置为 null,除非它已添加到符合以下条件的显示对象容器:不在显示列表中,但属于已加载 SWF 文件中顶级显示对象的子级。

 

 

举例说明

先来上个官方的显示列表。下面以该图的结构为例,介绍一下它的创建过程:

 

 

flash显示列表

步骤一:创建舞台(系统自动)

顶级显示容器。

swf创建时,flash自动作如下操作:

addChild(new Stage());

 这里的new出来的新Stage对象就是舞台。

它的root和stage属性都是它本身。

 注:该处理解比较模糊,如有纰漏,还请见谅

 

 

 

 

 

 

 

 

步骤二:创建SWF文件主类实例

分两种情况,分别对应文档类和在帧上写代码两种方式

 情况一:(外部文档类)

  如果在flash中设置了外部文档类,如右图         设置外部文档类

  flash会创建一个Demo对象

舞台.addChild(new Demo());

  这个new出来的Demo对象就是SWF文件主类实例,它加入到显示列表后,它的root属性变为它自身stage属性      变为舞台

 

 情况二:(帧代码)

  如果没有设置外部文档类,即上图设置为空。flash会自动创建一个MainTimeline对象。

舞台.addChild(new MainTimeline());

  这个new出来的MainTimeline对象就是SWF文件主类实例它加入到显示列表它的root属性变为它自身stage属性变为舞台

 

步骤三:创建SWF文件主类实例的所有子显示对象

  SWF文件主类实例的所有子显示对象(图中SWF文件主类实例下面的所有节点)的root属性都是SWF文件主类实例stage属性都是舞台

 

 

----------------------------------------注:以上均为个人所悟,如有错误还请指出。

 

 

posted @ 2012-12-12 23:33  sdlwlxf  阅读(610)  评论(0编辑  收藏  举报