《ActionScript 3.0 Cookbook》读书笔记6.1-关于Display List

由于工作太忙,2-5章的内容又相对简单,因此一直没有来得及整理学习笔记,现在正在学习第6章,因此笔记也从这里开始。前面的笔记,有时间再补上。

Display List

ActionScript3的Display List是我很感兴趣的一部分内容,它完全改变了ActionScript1和ActionScript2的层级结构。确实,新的层级结构非常清晰,更加便于使用。

Flash Player 9由两个部分组成:ActionScript虚拟机(AVM)和渲染引擎。要显示内容,先由AVM创建显示对象、再由渲染引擎将其显示在屏幕上。

例如,要将一个文本框显示在屏幕上,先使用new关键字来创建TextField类的实例,这个工作是由AVM处理;然后用addChild方法将这个实例显示在屏幕上(由渲染引擎处理)。

DisplayList是非常灵活的。最上层的容器就是Stage,Stage可以包含显示对象(DisplayObject),也可以包含容器(DisplayObjectContainer),而容器又可以包含显示对象或者子容器。实际上,Stage就是一个容器。

关于Stage

一个swf文件只有一个Stage。可以使用两种方法来调用它:

  1. DisplayObjectContainer(stage)
  2. 显示对象实例.stage

但无论采取哪种方式调用,无论在哪个显示对象实例上调用,它们所代表的Stage都是同一个Stage。

关于深度管理

ActionScript3的深度管理是自动的。和ActionScript2不同,在addChild的时候,不需要为加入DisplayList的显示对象制定深度。Depth已经成为历史。

深度管理器会自动为新添加的显示对象指定一个最高的深度,在新的深度管理中,最低的深度就是0 。深度为0的对象显示在最下面。如果在添加显示对象的时候为其指定了一个深度,而这个深度原来有显示对象,则深度管理器会自动将原来的内容的深度值增加,其他的显示对象深度值则相应地增加。

深度值只能是正整数和0。

每个容器的深度值是相对独立的。