DisplayObject类 DisplayObject类是所有显示类的抽象类,它具有所有显示类的共同属性、方法和事件。见图1 DisplayObject类的部分属性、方法和事件 上面列出的属性、方法和事件是显示类所共有的,也就是说由任何一个显示类创建的实例都会具有这些属性、方法和事件。 有了DisplayObject这个抽象类,就可以通过一种类和类之间的关系来编写显示类,这种关系叫继承。比如:A类继承了B类,A类就具有了B类的属性、方法和事件。就是说,A类即使没有编写B类的属性、方法和事件,通过继承A类也具有了B类的属性、方法和事件。 在继承关系中,如果A类继承了B类,则称A类为子类B类为父类,继承可以是多层进行的,即A类可以继承B类,B类也可以继承C类。 所有的显示类都继承了DisplayObject类,所以DisplayObject类是所有显示类的父类,所有显示类都具有DisplayObject类的属性、方法和事件。 InteractiveObject类 在DisplayObject类的子类中,一些类具有交互功能,一些类不具有交互功能。因此,可以对显示类进一步的抽象,抽象出交互类和非交互类。 交互类的名称为InteractiveObject类,定义了具有交互的属性、方法和事件。而非交互类由于没有处理事件的任何功能,所以不存在任何属性、方法和事件。所以,ActionScript3.0并没有把非交互类加到内置类中,而是让所有的非交互类直接继承DisplayObject类。 非交互类有AVM1Movie类、Bitmap类、MorphShape类、Shape类、StaticText类和Video类。见图2 6种非交互类的功能 在6种非交互类中,StaticText类用于创建静态文本实例,静态文本只能使用“文本工具”来创建,Bitmap类只能使用程序来创建,Shape类即可以使用工具也可以使用程序来创建实例。 对于交互类InteractiveObject来说,主要定义了交互所需的属性、方法和事件利用InteractiveObject类可创建右键菜单及处理双击事件等大部分事件。见图3 InteractiveObject类的部分属性、方法和事件 下面做一个右键菜单的实例: 1、打开Flash新建一个Flash文档 2、把图层1的名称改为mc,在图层的第一帧创建一个实例,名为mc的影片剪辑实例。 3、添加名为as的图层,单击第一帧,打开动作面板输入代码:
5、右击影片剪辑,隐藏内建菜单,出现自定义菜单 6、选择菜单的“中国教程网”选项,可在输出面板中输出“this is 中国教程网”的信息。 InteractiveObject类的contextMenu属性用于创建右键菜单,由于MovieClip类是交互类,所以继承了InteractiveObject类的contextMenu属性,可以创建影片剪辑实例的右键菜单。 容器与DisplayObjectContainer类 具有交互功能的显示类都继承自InteractiveObject类,这些显示类可分为SimpleButton类、TextField类、Loader类、Sprite类、Stage类和MovieClip类。见图4 6种交互类的功能 6种交互类中,按其是否能嵌套其他显示实例的功能,可分为容器类和非容器类。容器类的实例能嵌套其他实例,Loader类、Sprite类、Stage类和MovieClip类属于容器类。SimpleButton类和TextField类属于非容器类,非容器类的实例不能嵌套其他显示实例。因此就有了所有容器的抽象类DisplayObjectContainer类。 在Loader类、Sprite类、Stage类和MovieClip类4个容器类中,Loader类、Sprite类、Stage类直接继承DisplayObjectContainer类,MovieClip类又继承了Sprite类,所以如果不使用时间轴功能,用Sprite类比用MovieClip类效率更高。 DisplayObjectContainer类主要实现了显示实例、移除显示实例和深度管理等功能。见图5 DisplayObjectContainer类的部分属性、方法和事件 下面做一个遍历容器内的所有影片剪辑实例: 1、新建一个Flash文档 2、把图层一的名改为mc,在mc图层的第一帧创建6个影片剪辑实例,随意摆放在舞台中 3、新建名为as的图层,单击as图层第一帧,打开动作面板,输入代码:
从输出的信息可以看出,即使没有使用“属性”面板给影片剪辑实例命名,可以通过索引来引用它们,并且系统已经给这些实例指定了实例名。 |