时间轴类与文档类的关系
——根据zjs35及独自行走两位老师文章整理改编
时间轴类(MainTimeline)也是文档类,只不过它是自动创建的,而文档类是我们自定义的。测试思路如下:新建flash文档,先在时间轴上写代码
trace("//时间轴测试");
//stage.numChildren=1
trace("stage.numChildren="+stage.numChildren);
//stage.getChildAt(0):[object MainTimeline]
trace("stage.getChildAt(0):"+stage.getChildAt(0));
//this:[object MainTimeline]
trace("this:"+this);
//root:[object MainTimeline]
trace("root:"+root);
测试结果表明:stage下有1个显示对象即MainTimeline类的实例。
下面看看文档类,
package {
import flash.display.*;
//文档类必须继承Sprite类或其子类(如MovieClip)
public class DocumentClassExample extends MovieClip {
function DocumentClassExample() {
trace("//DocumentClassExample类体内测试");
stage.getChildAt(0)=1
stage.getChildAt(0):[object DocumentClassExample]
}
}
}
输出信息为:
//DocumentClassExample类体内测试
stage.numChildren=1
stage.getChildAt(0):[object DocumentClassExample]
//时间轴测试
stage.numChildren=1
stage.getChildAt(0):[object DocumentClassExample]
this:[object DocumentClassExample]
root:[object DocumentClassExample]
输出信息告诉我们,stage下还是只有1个显示对象,为文档类的实例。MainTimeline类和DocumentClassExample类都继承MovieClip类,由此可见MainTimeline类也是文档类,只不过它是自动创建的,而DocumentClassExample类是我们自定义的。
(以上内容根据zjs35老师文章整理改编。)
对于MainTimeline类就是一种特殊的文档类的结论,还可以从对其进行反编所获得的类代码来得到验证。下面是用Sothink SWF Decompiler v5.1 多国语言版对MainTimeline类文档反编得到的类代码:
package {
import flash.display.*;
dynamic public class MainTimeline extends MovieClip {
public function MainTimeline() {
addFrameScript(0, frame1);
return;
}
function frame1() {
trace("");
trace("//时间轴测试");
trace("this:" + this);
trace("root:" + root);
return;
}
}
}
此类名直接就是MainTimeline类,由此可见:MainTimeline类确实就是文档类的一种。
(以上内容根据独自行走老师文章整理改编。)