Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 as3中的对象主时间线、对象阶段和根之间有什么区别?_Actionscript 3_Actionscript - Fatal编程技术网

Actionscript 3 as3中的对象主时间线、对象阶段和根之间有什么区别?

Actionscript 3 as3中的对象主时间线、对象阶段和根之间有什么区别?,actionscript-3,actionscript,Actionscript 3,Actionscript,我想知道as3中[object main timeline]、[object Stage]和root之间的区别 我已经读过这个话题了。但是我没有弄清楚。root是你电影唇的主要(最上面)部分 在库中创建并编辑对象时,您看到的时间线是对象时间线,看到的阶段是对象阶段 对象时间线和阶段独立于主(\u root)时间线我认为您链接的文章对其进行了很好的总结(即使它没有很好地解释): 总结:一个阶段,每个SWF一个根(这是主要的时间线) 根目录是文档类或MainTimeline的实例 如果未提供文档类,

我想知道as3中
[object main timeline]
[object Stage]
root
之间的区别


我已经读过这个话题了。但是我没有弄清楚。

root
是你电影唇的主要(最上面)部分

在库中创建并编辑对象时,您看到的时间线是
对象时间线
,看到的阶段是
对象阶段


对象时间线和阶段独立于主(
\u root
)时间线

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

总结:一个阶段,每个SWF一个根(这是主要的时间线) 根目录是文档类或MainTimeline的实例 如果未提供文档类,则初始化

舞台可能是最容易理解的。每个Flash播放器都有一个舞台——可以将其视为Flash电影播放的窗口。它是最上面的显示对象——屏幕上出现的任何东西都是舞台的子对象。stage始终是相同的实例,对stage的任何引用都返回相同的值

根目录是特定SWF文件的显示层次结构的逻辑“顶部”。正如本文所解释的,每个SWF都有自己的根,它引用该SWF的文档类的实例

在运行时将一个SWF加载到另一个SWF时,可以看到root和stage之间的不同。两个主权财富基金的根不同,但阶段相同。每个SWF中的根将引用它们自己的SWF中最顶层的显示对象,即它们的文档类

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

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

正如我被称为“人类”一样,时间线在默认情况下被称为“主要时间线”。如果我的原子在一个电话搬运工里被弄乱,我被换成了一种不同类型的东西,比如“自然的怪物”,这就类似于把文件换成了一种不同的类别——结果是时间线会变成一种不同类型的东西

下面是一个测试,您可以用它来说明stage、root和document之间的关系:

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

trace("this " + this);
trace("root " + root);
trace("root.parent " + root.parent);
trace("stage " + stage);
trace("parent " + parent);
2.运行FLA并记录输出。请注意,时间线代码位于扩展名为“MainTimeline”的电影剪辑的类中。这与root引用的实例相同。MainTimeline实例的父级是Stage

this [object MainTimeline]
root [object MainTimeline]
root.parent [object Stage]
stage [object Stage]
parent [object Stage]
3.将文档类设置为您自己的类(例如:“Test”)。请注意,该类实际上并不一定存在-Flash将提示您自动创建它

4.运行FLA并记录新输出。请注意,时间线代码现在位于一个不同的类中,该类扩展了名为“Test”的电影剪辑。“测试”是添加到舞台上的电影剪辑类型

this [object Test]
root [object Test]
root.parent [object Stage]
stage [object Stage]
parent [object Stage]

从这一点我们可以看到,Flash在document类中使用了一个名为maintaline的默认类,除非您自己的类过于复杂。加载SWF时,会将document类的实例(无论是MainTimeline还是您自己的类)添加到stage中。

Root特别不同,因为它似乎不接收鼠标事件。有人能证实这一点吗?您可以在根上绘制,向其添加实体对象,等等。。。但是如果您向stage、root和被单击的对象添加一个侦听器,您会发现事件绕过了root。看起来,即使根位于stage和显示层次结构中的所有其他对象之间,当冒泡时,所有事件都会跳过它。

如果stage上没有任何内容,那么什么是根?
\u root
将在stageNode上没有内容时引用空的stage。它将跟踪
[对象主时间轴]
。现在使用根目录和[对象主时间轴]来区分<主代码级> > MyObj>代码>根> /COD>引用主级<代码> MyObj.root Ob/Case>是MyObjr的主要时间线,因此可以使用<代码> MyObj.root >代码>引用对象的时间线。stage是一个显示区域,您可以将Flash视为4维,其中3维由stage表示,第4维(时间)显示在时间轴上,现在可以清除了吗?一个问题是,“stage.root”返回的是stage本身,而不是预期的主文档类实例。从文档中:“对于加载的SWF文件中的显示对象,根属性是该SWF文件表示的显示列表树结构部分中最顶层的显示对象。对于表示加载的图像文件的位图对象,根属性是位图对象本身。对于加载的第一个SWF文件的主类实例,root属性是display对象本身。Stage对象的根属性是Stage对象本身