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 文件中顶级显示对象的子级。
举例说明:
先来上个官方的显示列表。下面以该图的结构为例,介绍一下它的创建过程:
步骤一:创建舞台(系统自动)
顶级显示容器。
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属性都是舞台。
----------------------------------------注:以上均为个人所悟,如有错误还请指出。