Flash交互设计-07-AS3.0显示编程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第7章AS3.0显示编程•关于如何使用AS来生成和控制各种图形、动画等显示对象。显示对象通常指的是显示在FlashPlayer舞台上的可视化的对象。7.1显示对象简介•显示对象(DisplayObject),指的是可以在舞台显示的一切对象,包括可以直接看得见的图形、动画、视频、文字等,也包括一些看不见的显示对象容器。在AS3.0中,任何的复杂的图形都是由显示对象和显示对象的容器共同构成。7.1.1AS3.0中显示对象的等级结构•编译完成的SWF文件,以最根部的stage(舞台)为基础来显。AS3.0构建的文件都有都有一个由显示对象构成的层次结构,这个结构称为“显示列表”。这个显示列表按照一定的等级和层次在舞台上显示出来,构成复杂的显示对象。7.1.1AS3.0中显示对象的等级结构•AS3.0支持的显示对象的结构类似于“树状结构。7.1.2显示对象的种类•在AS3.0中,所有的显示对象都属于同一个类:DisplayObject类。所有的显示对象都是其子类。•AVM1Movie类用于表示在AS1.0和2.0中的创作的SWF文件。•Bitmap类用于从外部文件加载或利用代码呈现的位图对象•MorphShape类是使用创作工具创建的补间形状对象•Shape类用于创建矢量图形,如矩形、直线、圆等•StaticText类是使用创作工具创建的静态文本•Video类用来显示视频文件的显示对象•InteractiveObject是一切能执行与鼠标键盘交互的对象,包括:1.DisplayObjectContainer类显示对象容器2.SimpleButton类按钮类3.TextField类文本显示输入对象•DisplayObjectContainer显示对象容器包括•Loader类使用该类可以加载外部资源,比如swf文件、位图、声音、视频等•Sprite类可以在其中创建图形,也可加入子对象等•Movieclip类Sprite类的子类,与Sprite区别是多了一个时间轴控制。•Stage类任何一个应用程序都用Stage实例,位于显示列表层次结构顶部7.1.3显示列表•AS3.0支持的显示对象的结构类似于“树状结构”,显示列表就是一个显示对象的清单,只要在FlashPlayer中显示出来的对象,都是该显示列表中的内容。•在AS3.0中,显示对象能否显示出来,取决于是否加入了显示列表。如果加入了显示列表,该对象就会被显示出来;否则,即使该对象已经被创建,也不能被显示出来。7.2显示对象的一些基本概念•在舞台上看到的显示对象,都有它们各自的属性,如位置、大小、透明度等等。这些属性都来自于显示对象的基类DisplayObject,该类包含了大部分显示对象的共有的特征(属性)、行为(方法)和相应事件处理。•在AS3.0中,DisplayObject类共有25个属性,6个方法和6个事件。7.2.1显示对象的常见属性•显示对象的常用的16属性(1)横坐标x:显示对象注册点距离自己父级容器注册点之间的水平距离,以象素为单位。如果父容器是舞台,那么就是自身注册点与舞台原点间的水平距离。(2)纵坐标y:显示对象注册点与父级容器注册点之间的竖直距离,以象素为单位。若父容器为根对象root,则为自身注册点与舞台原点之间的竖直距离。(3)宽度width:显示对象最左边到最右边之间的距离,以象素为单位。(4)高度height:显示对象最上边到最下边之间的距离,以象素为单位。7.2.1显示对象的常见属性(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:通常生产显示对象时,会分配默认的名字。若有需要,可以使用代码进行修改。7.2.1显示对象的常见属性(14)父容器parent:在显示列表中每个显示对象都有其父容器。parent属性指向显示对象的父容器,若显示对象不在父容器,则该属性为null。(15)根对象root:返回SWF文件主类的实例。若显示对象不在父容器,则该属性为null。(16)舞台stage:该属性持有的引用指向该显示对象所在的舞台。每个Flash程序,都有一个舞台。除了以上的16个属性之外,DisplayObject对象还有9个属性,分别为:loaderInfo、cacheASBitmap、filters、scale9Grid、blendMode、accessibilityProperties、opaqueBackground、scrollRect和transform。7.2.2显示对象的方法显示对象的基本方法有6个,常用的4个方法如下:(1)getBounds()方法:返回一个矩形区域,该矩形定义相对于显示对象所在坐标系的显示对象区域。(2)getRect()方法:返回一个矩形区域,该矩形定义相对于显示对象所在坐标系的显示对象区域。getRect()方法返回的矩形大小是不把笔触大小算进去的,而getBounds()方法返回的矩形大小把笔触大小算进去。(3)hitTestObject()方法:返回一个Boolean值,若为true,表示两个对象重叠或相交,否则为不相交。(4)hitTestPoint()方法:返回一个Boolean值,若为true,表示该对象对应点重叠或相交,否则为不相交。7.2.3显示对象的事件显示对象的事件有6个,常见的如下:(1)added事件:将显示对象添加到显示列表中时会调度该时间。(2)addedToStage事件:将显示对象直接添加到舞台显示列表或将包含显示对象的子对象添加至舞台显示列表中时会调度该事件。(3)removed事件:从显示列表中删除显示对象时会调度该事件。7.2.3显示对象的事件(4)removedFromStage事件:从stage舞台显示列表中删除显示对象或者删除包含显示对象的子对象时会调度该事件(5)enterFrame事件:播放头进入新帧时调度该事件。若播放头不移动,或者只有一帧,则会继续以帧频调度此事件。(6)render事件:将要更新和呈现显示列表时调度。要保证render事件在当前帧触发,必须调用stage.invalidate()。7.3管理显示对象•显示对象只有显示在屏幕之上,才能达到要实现的效果。显示对象容器就是用来储存和显示显示对象的对象。要实现在显示对象容器中显示对象,就需要把显示对象加入到显示对象列表中。7.3.1容器的概念•所有的显示对象都要放入显示对象容器中才能够显示,为了方便区分,把显示对象容器简称为容器。容器是可以嵌套的,容器中可以放置非容器显示对象,也可以放置子容器对象。•容器的主要功能有一下几点:1)提供访问、添加、删除显示对象的功能。2)具有深度管理功能。3)其中深度管理也就是管理容器中子对象的叠放次序。所谓的叠放次序,即显示对象重叠时从前到后的显示顺序。7.3.2添加显示对象•在AS3.0中,要把一个对象显示在屏幕中,需要作两步工作,一是创建显示对象,二是把显示对象添加到容器的显示列表中。加入显示列表的方法有addChild()和addChildAt()7.3.2添加显示对象•要在AS3.0中创建一个显示对象,只需使用new关键字加类的构造函数即可。只要是继承自DisplayObject类或者其子类的的实例都可以添加到显示对象列表中,比如Sprite,MovieClip,TextField,或自定义类。•用下列代码创建TextField(文本框)的代码如下所示。varmytext:TextField=newTextField();然后用addChild()或者addChildAt()方法加入到显示列表中。7.3.2添加显示对象1、将对象直接添加到显示列表语法:容器对象.addChild(显示对象)2、将对象直接添加到显示列表的指定层位置语法:容器对象.addChildAt(显示对象,层位置索引)7.3.3删除显示对象1.移除指定名称的显示对象要移除已经知道显示对象名称的显示对象,可以使用显示对象类的removeChild()方法语法:容器对象.removeChild(显示对象)2.删除指定索引的显示对象要删除指定位置索引的显示对象,可以使用显示对象类的removeChildAt()方法语法:容器对象.removeChildAt(位置索引)7.3.4深度管理•深度,也就是层位置索引,用于说明同一个容器中同一级别的所有显示对象从前到后的叠放次序。•1)最低层对象的深度是0,在其上增加的对象深度依次为1、2、3……•2)深度由各自的容器对象所管理。每一个容器都知道自己有多少个子对象,这个数目记录在自己容器的numChildren属性中。每一个对象在容器显示列表中的位置索引代表了其深度值。每一个容器的深度范围为0~numChildren-1。•3)添加显示对象会自己调整各个显示对象的深度,避免层次冲突。7.3.5访问显示对象1.通过深度访问显示对象:通过深度来访问显示对象,要使用getChildAt()方法。容器对象.getChildAt(深度)2.通过名字访问显示对象:每一个显示对象都有一个名称,该名称可以使用该显示对象的name属性进行访问和设置。在创建显示对象的时候,可以指定显示对象的名字,也可以不指定显示对象的名字。若没有指定,FlashPlayer会自动的分配给该显示对象一个默认的名字,如:“instance1”“instance2”等。7.3.5访问显示对象3.通过坐标访问显示对象:在AS3.0中,可以通过坐标来访问置于该坐标之上的所有显示对象。getObjectsUnderPoint()方法的用法格式如下:容器对象.getObjectsUnderPoint(点对象);7.3.5修改显示对象深度1、直接设置对象的深度,一旦设置某对象新的深度,则其他对象深度会相应自动调整:格式:容器对象.setChildIndex(显示对象,深度)如果对象的显式类型不是显示对象,可以使用:DisplayObject(对象名)来强制转换。2、交换对象深度格式1:容器对象.swapChildren(显示对象1,显示对象2)格式2:容器对象.swapChildrenAt(深度1,深度2)7.4处理显示对象举例•显示对象放在舞台之后,可以改变对象的位置、透明度、颜色,可以使显示对象旋转,也可以控制拖动显示对象。这些都要通过DisplayObject类及其子类的属性和方法来实现。7.4.1改变对象的位置•要改变一个显示对象的位置,只用调整显示对象的横坐标x和纵坐标y这两个属性就可以了。注意x和y属性始终是指显示对象相对于其父显示对象坐标轴的(0,0)坐标的位置。7.4.2缩放显示对象•若要缩放显示对象,可以采用两种方法来缩放显示对象的大小:使用尺寸属性(width和height)或缩放属性(scaleX和scaleY)。•width和height属性使显示对象的宽和高,它们以象素为单位,可以通过指定新的宽度和高度值来缩放显示对象、•scaleX和scaleY属性是指显示对象的显示比例,是一个浮点数字,最小值为0,最大不限,值为1表明和原始大小相同。缩放值大于1表示放大显

1 / 37
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功