第7章 AS3.0显示编程

更新时间:2023-03-21 06:41:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第7章 AS3.0显示编程 ActionScript 3.0的显示功能有了很大的革新, 原有的显示结构发生了重大的改变。对于熟悉了 ActionScript以前版本中MovieClip影片剪辑控制 和使用的AS程序人员来说,这次革新将导致一个 新的学习过程。ActionScript 3.0显示编程的内 容主要是关于如何使用ActionScript来生成和控 制各种图形、动画等显示对象。显示对象通常指 的是显示在Flash Player舞台上的可视化的对象。

7.1 显示对象简介 显示对象(Display Object),指的是可以在舞 台显示的一切对象,包括可以直接看得见的图形、 动画、视频、文字等,也包括一些看不见的显示 对象容器。在ActionScript 3.0中,任何的复杂 的图形都是由显示对象和显示对象的容器共同构 成。

7.1.1 AS3.0中显示对象的等级结构 编译完成的SWF文件,以最根部的stage(舞台)为基础,展现出不同的显 示效果。利用ActionScript 3.0构建的Flash播放文件都有都有一个由显 示对象构成的层次结构,这个结构称为“显示列表”。这个显示列表按照 一定的等级和层次在舞台上显示出来,构成复杂的显示对象。 ActionScript 3.0 支持的显示对象的结构类似于“树状结构”,以舞台 为根,SWF文件为干,显示对象为枝叶。具体结构见图所示。

7.1.2 显示对象的种类 在ActionScript3.0中,所有的显示对象都属于同 一个类:DisplayObject类。所有的显示对象都是 其子类。本节将对显示对象的种类进行简单的介 绍,并且进行简要的分类。 1.显示对象的具体种类 2.显示对象分类

7.1.3 显示列表 在前文中已经说到,ActionScript 3.0支持的显示对象的结构类 似于“树状结构”,这上面的所有的显示对象和容器,就构成了 显示列表。显示列表是ActionScript 3.0中的一个新概念。显示 列表就是一个显示对象的清单,只要在Flash Player中显示出来 的对象,都是该显示列表中的内容。 在ActionScript 3.0中,显示对象能否显示出来,取决于是否加 入了显示列表。如果加入了显示列表,该对象就会被显示出来; 否则,即使该对象已经被创建,也不能被显示出来。 ActionScript3.0显示列表进行了以下方面的改进,具有明显的优 点。 1.呈现方式更为有效且文件较小,有效的提高了性能。 2.改进的深度管理,使层级管理更加容易 3.完整遍历显示列表,使对象的访问更方便 4.列表外的显示对象,方便了显示对象的管理 5.更便于创建显示对象的子类,创建可视化对象更容易

7.2 显示对象的一些基本概念 在舞台上看到的显示对象,都有它们各自的属性, 如位置、大小、透明度等等。这些属性都来自于 显示对象的基

类DisplayObject,该类总结了大部 分显示对象的共有的特征和行为。特征对应于显 示对象的属性,行为对应于显示对象的方法。 在ActionScript 3.0中,DisplayObject类共有25 个属性,6个方法和6个事件。下面将简单介绍一 些常用的属性和方法,对于复杂的应用,将在后 面的章节结合具体的实例讲解。

7.2.1 显示对象的常见属性 显示对象的属性共有25个,本节将介绍常用的一些基本属性。 (1)横坐标x:显示对象注册点距离自己父级容器注册点之间的水平距离, 以象素为单位。如果父容器是舞台,那么就是自身注册点与舞台原点间的 水平距离。 (2)纵坐标y:显示对象注册点与父级容器注册点之间的竖直距离,以象 素为单位。若父容器为根对象root,则为自身注册点与舞台原点之间的竖 直距离。 (3)宽度width:显示对象最左边到最右边之间的距离,以象素为单位。 (4)高度height:显示对象最上边到最下边之间的距离,以象素为单位。 (5)横向缩放比例scaleX:一个比例值,0~1之间的数字。控制显示对 象的横向缩放比例。 (6)纵向缩放比例scaleY:一个比例值,0~1之间的数字。控制显示对 象的纵向缩放比例。 (7)鼠标横向横坐标mouseX:鼠标相对于当前显示对象注册点之间的水 平距离。 (8)鼠标横向纵坐标mouseY:鼠标相对于当前显示对象注册点之间的竖 直距离。

7.2.1 显示对象的常见属性 (9)顺时针旋转角度rotation:显示对象绕轴点顺时针旋转的角度。0~180度表示 顺时针旋转角度,0~-180度表示逆时针旋转角度。如果超过了这个范围,则自动减 去360的整数倍。 (10)透明度alpha:0~1之间的值,0表示完全透明,1表示完全不透明。 (11)可见性visible:Boolean值,用于控制显示对象是否可见。true表示将对象显 示,false表示不显示对象。但不管设置成何值,该显示对象始终位于显示对象列表 中。 (12)遮照mask:持有的引用是用来遮照的显示对象。 (13)显示对象名字name:通常生产显示对象时,会分配默认的名字。若有需要,可 以使用代码进行修改。 (14)父容器parent:在显示列表中每个显示对象都有其父容器。parent属性指向显 示对象的父容器,若显示对象不在父容器,则该属性为null。 (15)根对象root:返回SWF文件主类的实例。若显示对象不在父容器,则该属性为 null。 (16)舞台stage:该属性持有的引用指向该显示对象所在的舞台。每个Flash程序, 都有一个舞台。 除了以上的16个属性之外,DisplayObject对象还有9个属性,分别为:loaderInfo、 cacheASBitmap、filters、scale9Grid、blendMode、accessibilityProperties、 opaq

ueBackground、scrollRect和transform。这些属性在后面的章节中根据需要进 行讲解。

7.2.2 显示对象的方法 显示对象的基本方法有6个,常用的方法如下: (1)getBounds()方法:返回一个矩形区域,该矩形定义 相对于显示对象所在坐标系的显示对象区域。 (2)getRect()方法:返回一个矩形区域,该矩形定义相 对于显示对象所在坐标系的显示对象区域,注意该区域不 包含形状上的笔触宽度。 (3)hitTestObject()方法:返回一个Boolean值,若为 true,表示两个对象重叠或相交,否则为不相交。 (4)hitTestPoint()方法:返回一个Boolean值,若为 true,表示该对象对应点重叠或相交,否则为不相交。

7.2.3 显示对象的事件 显示对象的事件有6个,常见的如下: (1)added事件:将显示对象添加到显示列表中时会调度该时间。下面的两种方法会 触发此事件:将显示对象添加到容器、将显示对象添加到容器的某一层次。 (2)addedToStage事件:将显示对象直接添加到舞台显示列表或将包含显示对象的 子对象添加至舞台显示列表中时会调度该事件。下面的两种情况下会触发此事件:将 显示对象添加到容器、将显示对象添加到容器的某一层次。 (3)removed事件:要从显示列表中删除显示对象时会调度该事件。以下两种情况下 会生成此事件:将显示对象容器的某个显示对象删除、将显示对象容器中的某个层次 的显示对象删除。 (4)removedFromStage事件:要从显示列表中删除显示对象或者删除包含显示对象 的子对象时会调度该事件。以下两种情况下会生成此事件:将显示对象容器的某个显 示对象删除、将显示对象容器中的某个层次的显示对象删除。 (5)enterFrame事件:播放头进入新帧时调度该事件。若播放头不移动,或者只有 一帧,则会继续以帧频调度此事件。 (6)render事件:在显示器述评之前调度该事件。当使用render事件的显示对象进 入舞台时,或者显示对象存在于显示列表时才会触发该事件。要保证render事件在当 前帧触发,必须调用stage.invalidate()。

7.3 管理显示对象 显示对象只有显示在屏幕之上,才能达到要实现 的效果。显示对象容器就是用来储存和显示显示 对象的对象。要实现在显示对象容器中显示对象, 就需要把显示对象加入到显示对象列表中。本节 主要介绍如何添加和删除显示对象,如何通过深 度管理对象以及如何访问显示对象。

7.3.1 容器的概念 所有的显示对象都要放入显示对象容器中才能够 显示,为了方便区分,把显示对象容器简称为容 器。容器是可以嵌套的,容器中可以

放置非容器 显示对象,也可以放置子容器对象。 容器的主要功能有一下几点: 提供访问、添加、删除显示对象的功能。 具有深度管理功能。 其中深度管理也就是管理容器中子对象的叠放次 序。所谓的叠放次序,表示显示对象重叠时从前 到后的显示顺序。处于显示顺序最前面的完整显 示,后面的对象依次被前面的对象遮挡,甚至有 的不能显示出来。

7.3.2 添加显示对象 在ActionScript 3.0中,要把一个对象显示在屏幕中,需要作两 步工作,一是创建显示对象,二是把显示对象添加到容器的显示 列表中。加入显示列表的方法有addChild()和addChildAt()。 要在ActionScript 3.0中创建一个显示对象,只需使用new关键字 加类的构造函数即可。只要是继承自DisplayObject类或者其子类 的的实例都可以添加到显示对象列表中,比如Sprite,MovieClip, TextField,或自定义类。用下列代码创建TextField(文本框) 的代码如下所示。 var mytext:TextField =newTextField( ); 上面已经使用代码建立了一个文本框实例,但是它并没有位于显 示列表中,也就是说它现在还没有显示在屏幕上。要把这个文本 框显示在屏幕中,必须使用容器类的addChild()或者addChildAt() 方法加入到显示列表中。 1.将显示对象直接添加到显示列表中 2.将显示对象添加到指定位置

7.3.3 删除显示对象 要移除位于显示对象列表中的显示对象,需要使 用容器类的removeChild()和removeChildAt()方 法。 1.移除指定名称的显示对象 要移除已经知道显示对象名称的显示对象,可以 使用显示对象类的removeChild()方法其用法格式 如下: 容器对象.removeChild(显示对象) 2.删除指定索引的显示对象要删除指定位置索引 的显示对象,可以使用显示对象类的 removeChildAt()方法。其用法格式如下所示。 容器对象.removeChildAt(位置索引)

7.3.4 深度管理 深度,也就是前文所说的位置索引,用于说明同一个容器 中同一级别的所有显示对象从前到后的叠放次序。 在ActionScript 3.0中,使用了全新的深度管理体系和轻 巧的深度管理方法,使我们可以很方便和舒适的添加和访 问对象。此深度管理体系有两个重要的特点: 深度由各自的容器对象所管理。每一个容器都知道自己有 多少个子对象,这个数目记录在自己容器的numChildren属 性中。每一个对象在容器显示列表中的位置索引代表了其 深度值。每一个容器的深度范围为0~numChildren-1。 添加显示对象会自己调整各个显示对象的深度,避免层次 冲突。比如某一个深度已经有了一个显示

7.3.5 访问显示对象 要访问加入到容器中的显示

对象,可以通过3种方法来实现:通过 深度访问、通过名字访问和通过全局坐标访问。 1.通过深度访问显示对象:通过深度来访问显示对象,要使用 getChildAt()方法。用法格式如下: 容器对象.getChildAt(深度) 2.通过名字访问显示对象:每一个显示对象都有一个名称,该名 称可以使用该显示对象的name属性进行访问和设置。在创建显示 对象的时候,可以指定显示对象的名字,也可以不指定显示对象 的名字。若没有指定,Flash Player会自动的分配给该显示对象 一个默认的名字,如:“instance1”“instance2”等。 3.通过坐标访问显示对象:在ActionScript 3.0中,可以通过坐 标来访问置于该坐标之上的所有显示对象。 getObjectsUnderPoint()方法的用法格式如下: 容器对象. getObjectsUnderPoint(点对象);

7.4 处理显示对象 显示对象放在舞台之后,可以进行大量的操作, 比如改变对象的位置、透明度、颜色,可以使显 示对象旋转,也可以控制拖动显示对象。这些都 要通过DisplayObject类及其子类的属性和方法来 实现。本节通过一些实例,介绍使用这些属性和 方法控制显示对象发生变化的方法。

7.4.1 改变对象的位置 要改变一个显示对象的位置,只用调整显示对象的横坐标x和纵坐 标y这两个属性就可以了。注意x和y属性始终是指显示对象相对于 其父显示对象坐标轴的(0,0)坐标的位置。 下面的实例在舞台创建一个显示对象圆和四个箭头对象。通过点 击四个箭头控制圆上下左右移动。使用文档类:SetXY,

7.4.2 缩放显示对象 若要缩放显示对象,可以采用两种方法来缩放显示对象的 大小:使用尺寸属性(width和height)或缩放属性 (scaleX和scaleY)。 width和height属性使显示对象的宽和高,它们以象素为单 位,可以通过指定新的宽度和高度值来缩放显示对象、 scaleX和scaleY属性是指显示对象的显示比例,是一个浮 点数字,最小值为0,最大不限,值为1表明和原始大小相 同。缩放值大于1表示放大显示对象,小于1表示所需显示 对象。 这两种方法都可以缩放显示对象,在使用一种属性进行缩 放的时候,另一种属性的值也会对于发生变化。比如使用 尺寸属性改变显示对象时,修改width的值为width/2,则 该显示对象的缩放属性scaleX将变为0.5。

本文来源:https://www.bwwdw.com/article/m95q.html

Top