写在前面的话:AS3.0,从大的框架来看,大致可以归纳为三块内容:基础程序、显示编程、网络交互。基础程序这块,和其他的程序语言有较大的相通之处,是其他程序员最容易上手的部分,也是Flash的骨架;显示编程这块,是Flash独有的特色,控制了Flash的一切外观表现,是Flash的样貌;而网络交互,属于Flash的高级功能,是连接不同用户之间的桥梁,是Flash的内涵。
这一篇,我将为大家介绍有关显示编程的知识。下面我们通过比对,AS2.0和AS3.0在显示编程上的区别,来了解显示编程的基础概念。
一、显示对象类的分离
在AS2.0里,可以说,影片剪辑(MovieClip)是所有对象的元始天尊,因为所有对象的类都基于他。但是这样一来,就显得非常臃肿。即使我们只需要一个简单的矢量方块,却不得不继承影片剪辑的所有属性和方法,比如时间轴、帧频等。
在AS3.0里,把显示对象类分离开,很好的优化了该系统。显示对象的树状结构图如下:
基类(DisplayObject)包含了显示对象最基本的属性和方法,其他各个对象都是该类的子类,并且有各自特定的属性和方法。比如我们要建立一个矢量图形,就只需要创建一个Shape类就可以,这样比创建一个MovieClip类,要节约大量的内存空间和资源,有效的提高性能。
其中,我说明一下Sprite对象,该对象是AS2.0不具备的。我也不知道怎么翻译好,就直接称之为Sprite对象了。该对象和MovieClip对象的唯一区别是,该对象不包含时间轴相关的属性和方法。所以如果你需要创建一个只有一帧的影片剪辑,应当使用Sprite对象来节约资源,提高性能。
二、显示对象的展现管理
在AS2.0中,只要创建一个显示对象,该对象即是可见的(即使在舞台外,也是可见的,只是因为舞台的限制没有展现出来)。这样的话,即使有暂时不需要的显示对象,也同样需要占用处理时间来呈现。
而在AS3.0中,创建的显示对象,平时是不可见的,也不会占用处理时间来呈现。只有调用了addChild()等方法,将该显示对象添加进显示列表后,该对象才会呈现。这个也是AS3.0的一个重要的改变。
需要说明的是,直接用绘图工具在舞台上创建的对象,当创建完成后,会自动加入显示列表并展现,这个AS2.0和AS3.0是一样的。
三、改进了深度管理
在AS2.0中,采用线性深度管理的方法(Depth)。由于该方法存在断层,即不需要保持连贯性。因此给管理或者遍历都造成了相当大的麻烦。
在AS3.0中,给所有的显示对象都建立的索引列表,当你添加或者删除一个显示对象时,程序都会自动的更新该列表,因此可以方便的实现管理和遍历。(具体的方法下文会介绍)
在AS2.0里,并不是所有的显示对象都可以用程序语言访问,比如矢量形状。而在AS3.0中,可以访问显示列表中的所有对象。通俗的说,只要你能够看得到的东西,都可以用程序来进行控制。