对象主时间轴,对象阶段和root中的as3有什么区别?

Ben*_*nny 9 actionscript actionscript-3

我想知道的区别 [object main timeline],[object Stage]root在AS3?

我已经从主题如何阶段,根和MainTimeline Fit Together中读到了.但我没有弄清楚.

Luk*_* In 11

我认为你链接的文章很好地总结了它(即使它没有很好地解释它):

总结:一个阶段,每个SWF一个根(这是主时间轴),如果没有提供文档类,则root是文档类的实例或MainTimeline类

舞台可能是最容易理解的.每个Flash Player有一个阶段 - 将其视为Flash影片播放的窗口.它是最顶层的显示对象 - 屏幕上显示的任何内容都是舞台的孩子.阶段始终是相同的实例,对stage的任何引用都返回相同的值.

Root是特定SWF文件的显示层次结构的逻辑"顶部".正如文章中所解释的,每个SWF都有自己的root,它指的是该SWF的文档类的实例.

在运行时将一个SWF加载到另一个SWF时,您可以看到root和stage之间的不同.两个SWF将具有不同的根,但具有相同的阶段.每个SWF中的根将引用它们自己的SWF的最顶层显示对象,这是它们的文档类.

MainTimeline是用于文档类的默认类.文档类是加载SWF影片时添加到舞台的显示对象.在它下面是一个扩展MovieClip的普通类.

文档类是您在Flash编辑器中看到的MovieClip.这是保存时间轴代码和添加时间轴动画的地方.可以使用自定义类覆盖文档类.更改文档类将更改root引用的对象的名称.

就像我被称为"人类"一样,时间线默认称为"MainTimeline".如果我的原子在远程传送器中受到损坏而我被改变为不同类型的东西,例如"FreakOfNature",这类似于将文档更改为不同的类 - 结果是时间线将变为不同类型的东西.

这是一个可以用来说明阶段,根和文档如何相关的测试:

1.创建一个空的FLA文件,并添加以下时间轴代码:

trace("this " + this);
trace("root " + root);
trace("root.parent " + root.parent);
trace("stage " + stage);
trace("parent " + parent);
Run Code Online (Sandbox Code Playgroud)

2.运行FLA并记下输出.请注意,时间轴代码位于扩展名为"MainTimeline"的影片剪辑的类中.这是root引用的同一个实例.MainTimeline实例的父级是Stage.

this [object MainTimeline]
root [object MainTimeline]
root.parent [object Stage]
stage [object Stage]
parent [object Stage]
Run Code Online (Sandbox Code Playgroud)

3.将文档类设置为您自己的类(例如:"Test").请注意,该类实际上不必存在 - Flash将提示您自动创建它.

在此输入图像描述

4.运行FLA并记下新输出.请注意,时间轴代码现在位于不同的类中,该类扩展名为"Test"的影片剪辑."Test"是添加到舞台的影片剪辑的类型.

this [object Test]
root [object Test]
root.parent [object Stage]
stage [object Stage]
parent [object Stage]
Run Code Online (Sandbox Code Playgroud)

从中我们可以看到Flash使用一个名为MainTimeline的默认类作为文档类,除非用你自己的方法覆盖.加载SWF时,文档类的实例(可以是MainTimeline或您自己的类)将添加到舞台中.