AS3中的显示列表

每个AS3程序都有一个管理显示对象的机制,被称作显示列表。显示列表包含了应用中所有可见的元素。显示元素通常归为以下几类:

•舞台:舞台是显示对象最基础的容器。每个程序都有一个舞台对象,包含所有屏幕上的显示对象。舞台是最高层的容器,位于显示列表的顶端。每个SWF文件有一个关联的AS类,也就是SWF文件的主类。当Flash播放器在HTML页面打开一个SWF文件时,Flash播放器将调用那个类的构造函数,所创建的实例(一般都是显示对象)会被作为子对象添加到舞台对象中。主类一般继承Sprite类。你可以通过任何显示对象实例的stage属性获得舞台对象。
•显示对象:在AS3.0中,一个应用中所有屏幕上出现的元素都是不同种类的显示对象。flash.display包包含DisplayObject类,它是一个被许多其他类所继承的基类。这些不同的类代表了不同的显示对象,比如矢量形状,影片剪辑和文本框等。 
•显示对象容器:显示对象容器是特殊种类的显示对象,除了他们自己有视觉特性之外,还能容纳子显示对象。DisplayObjectContainer类是DisplayObject类的一个子类。一个DisplayObjectContainer对象可以在其子列表中包含多个显示对象。

尽管所有显示对象继承自DisplayObject类,它们的类型都是DisplayObject类的一个明确的子类。你只能创建有明确定义的外表的显示对象的实例。比如,你可以通过合适的构造函数创建一个Sprite类,Shape类或Video类实例,但你不能通过调用DisplayObject()构造函数来创建DisplayObject类的实例。

AS应用的显示列表包含应用中的所有可视对象。你可以把显示列表看做树结构,其中舞台是在所有内容之后的。舞台包含SWF文件主类的实例(比如,Flash SWF中的主时间轴或者Flex SWF的应用组件)。主对象同样可以包含一个或更多的显示对象或显示对象容器;然后任何容器可以包含其他的子对象。下面的框图显示了一个SWF中假设的显示对象结构:



子内容(容器中的任何显示对象)通常在父容器前面显示。如果一个显示对象容器包含多个子显示对象,它们会向前堆叠;显示对象容器会记录它们的顺序。显示对象容器中的子显示对象的顺序通常表示为显示对象的深度,入栈顺序或索引(因为每个显示对象的深度以整形索性存储,就像数组的索引,最底部的子对象位置为0,下一个是1,以此类推)。

由于对显示列表中的显示对象可以有多种操作,这篇快速入门涵盖了以下常见显示列表操作。

向显示列表中添加对象 

最常见的操作是向显示列表中添加显示对象。你需要创建子显示对象,并通过调用addChild()方法来将它添加到显示对象容器中。默认情况下,显示对象被添加到容器所有子对象的前面;如果你想把它插入到子对象的其他位置,你可以使用addChildAt()方法。

下面的例子创建了三个显示对象(Shape类实例),并将它们作为子对象添加到名为container的对象的显示列表中。前两个对象(圆和三角)是使用addChild()方法添加的,所以他们被添加到索引位置0和1的地方。第三个(方形)使用addChildAt()添加到位置索引1的地方,将三角向前推向位置2。

简单来说,示例代码调用createShape()函数来创建Shape实例;将对象添加到显示列表的过程在主程序中。

posted on 2012-09-26 16:50  端小六  阅读(952)  评论(0编辑  收藏  举报