工作中有一部分是处理公司的富媒体广告,客户提供的flash素材也是五花八门,为了能处理得更好,也为了能研究更多的富媒体广告形式,所以也不得不对flash要进行更深入的了解。
最近在研究as3的过程中,对stage root shape sprite MovieClip这些概念理解不透,找了些资料并整理了一下。

stage :显示对象的舞台,是上图中最顶层的显示对象。
类继承关系是:Stage -> DisplayObjectContainer -> InteractiveObject -> DisplayObject -> EventDispatcher -> Object
无法以全局方式访问 Stage 对象。 而是需要利用 DisplayObject 实例的 stage 属性进行访问。
Flash 应用程序只有一个 Stage 对象。 例如,您可以创建多个显示对象并加载到显示列表中,每个显示对象的 stage 属性是指相同的 Stage 对象(即使显示对象属于已加载的 SWF 文件)。
如果显示对象未添加到显示列表,则其 stage 属性会设置为 null。
root :根,在上面的图示上的第二层。
root是DisplayObject类的一个实例。
类继承关系是:DisplayObject -> EventDispatcher -> Object
通过DisplayObject 的root属性进行访问。
对于加载的 SWF 文件中的显示对象,root 属性是此 SWF 文件所表示的显示列表树结构部分中的顶级显示对象。 对于代表已加载图像文件的位图对象,root 属性就是位图对象本身。 对于第一个加载的 SWF 文件的主类的实例,root 属性就是显示对象本身。 Stage 对象的 root 属性是 Stage 对象本身。 对于任何未添加到显示列表的显示对象,root 属性设置为 null,除非它已添加到符合以下条件的显示对象容器:不在显示列表中,但属于已加载 SWF 文件中顶级显示对象的子级。
例如,如果您通过调用 Sprite() 构造函数方法创建新的 Sprite 对象,则其 root 属性将为 null,除非您将其添加到显示列表中(或添加到不在显示列表中但属于 SWF 文件中顶级显示对象的子级的显示对象容器中)。
对于加载的 SWF 文件,即使用于加载文件的 Loader 对象未在显示列表中,SWF 文件中的顶级显示对象也会为其本身设置 root 属性。 在 Loader 对象添加为对其设置 root 属性的显示对象的子级前,它不会设置自己的 root 属性。
this :和其他OOP语言一样,是指向当前引用的对象,例如在主时间轴上的this,就是root。
Sprite MovieClip Shape :Sprite个3.0中我们打交道最多的容器了。一句话,它是去掉了时间轴的MovieClip(即阉割版MovieClip)。如我开头例子所说,倘若我们只是为了创建一个容器,那么Sprite是首选。甚至可以说,我们这些写代码的开发人员,90%以上的情况都只需要和Sprite打交道。含有时间轴的MovieClip一般是Flash工具创建出来的,往往只需要加载就可以了。准确的说,Sprite比ActionScript 2中的MovieClip不止少一个TimeLine,如装载。Sprite中也含有Graphic对象,这意味着,它也可以直接在其中代码绘图。
但我们始终要记住,Sprite不同于Shape,区别就在于Sprite是容器,而Shape不是。
从代码角度说,就是,Sprite可以addChild(),但Shape不可以。
继承关系:
Sprite -> DisplayObjectContainer -> InteractiveObject -> DisplayObject -> EventDispatcher -> Object
MovieClip -> Sprite -> DisplayObjectContainer -> InteractiveObject -> DisplayObject -> EventDispatcher -> Object
Shape -> DisplayObject -> EventDispatcher -> Object
参考资料:
flash api
http://nwhy.org/as3-stage-root-this.html
http://www.cnblogs.com/jiahuafu/archive/2009/06/30/1514154.html