FlashAS3.0动画程序设计案例教第7章_第1页
FlashAS3.0动画程序设计案例教第7章_第2页
FlashAS3.0动画程序设计案例教第7章_第3页
FlashAS3.0动画程序设计案例教第7章_第4页
FlashAS3.0动画程序设计案例教第7章_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章 显示编程FlashAS3.0

显示列表处理显示对象绘图API

处理位图颜色变换使用滤镜7.1显示列表

显示列表是AS3.0中的一个新概念,用于组织出现在舞台上的所有可视对象。一个Flash影片可能存在很多需要在舞台上显示的可视对象。7.1.1显示列表结构舞台是包括显示对象的基础容器。每个应用程序都有一个Stage对象,其中包含所有的屏幕显示对象。舞台是顶级容器,它位于显示列表层次结构的顶部。所有的可视对象可分为显示对象容器和普通显示对象。显示对象容器和普通显示对象不同,它可以包含其他显示对象或显示对象容器。///////////////////////////////http://///7.1.2stage、root、this、parent

stage、root、parent是每个可视对象都具有的属性。stage指舞台对象,可以使用mysprite.stage的形式访问舞台对象,其中mysprite是自定义的可视对象名。root是影片文件(*.swf)的根,通常指的是主时间轴或文档类对象。可以使用mysprite.root形式访问影片文件的根对象。parent是指当前对象的上一级容器对象。比如,在主场景的时间轴中,this.parent代表舞台。

this是AS3.0的保留关键字,指的是当前所在的对象。比如,如果代码出现在主时间轴的关键帧中,那么this就代表root。

7.1.3核心显示类

AS3.0的flash.display包中包括可在FlashPlayer中显示的可视对象的类。

7.2处理显示对象7.2.1在显示列表中添加显示对象实例化显示对象时,在将显示对象实例添加到显示列表上的显示对象容器之前,显示对象不会出现屏幕上(即在舞台上)。

importflash.display.*;importflash.text.TextField;varmyText:TextField=newTextField();myText.text="Buenosdias.";this.addChild(myText);7.2.2处理显示对象容器如果从显示列表中删除某个DisplayObjectContainer对象,或者以其它某种方式移动该对象或对其进行变形处理,则会同时删除、移动DisplayObjectContainer中的每个显示对象或对其进行变形处理。显示对象容器本身就是一种显示对象,它可以添加到其它显示对象容器中。要使某一显示对象出现在显示列表中,必须将该显示对象添加到显示列表上的显示对象容器中。使用容器对象的addChild()方法或addChildAt()方法可执行此操作。例如,如果下面的代码没有最后一行,将不会显示myTextField对象:varmyTextField:TextField=newTextField();myTextField.text="hello";this.root.addChild(myTextField);

使用addChildAt()方法可将子级添加到显示对象容器的子级列表中的特定位置。使用getChildAt()方法来验证显示对象的图层顺序。getChildAt()方法根据向容器传递的索引编号返回容器的子对象。

removeChild()和removeChildAt()方法并不完全删除显示对象实例。这两种方法只是从容器的子级列表中删除显示对象实例。该实例仍可由另一个变量引用。(请使用delete运算符完全删除对象。)

7.2.3遍历显示列表显示列表是一个树结构。树的顶部是舞台,它可以包含多个显示对象。

DisplayObjectContainer类包括通过显示对象容器的子级列表遍历显示列表的属性和方法。例如,考虑下面的代码,其中在container对象(该对象为Sprite,Sprite类用于扩展DisplayObjectContainer类)中添加了两个显示对象title和pict:varcontainer:Sprite=newSprite();vartitle:TextField=newTextField();title.text="Hello";varpict:Loader=newLoader();varurl:URLRequest=newURLRequest("banana.jpg");pict.load(url);="bananaloader";container.addChild(title);container.addChild(pict);7.2.4处理显示对象的事件

DisplayObject类从EventDispatcher类继承。这意味着,每个显示对象都可完全参与到事件模型中)。每个显示对象可使用其addEventListener()方法(继承自EventDispatcher类)来侦听特定的事件,但只有侦听对象是该事件的事件流的一部分时才能实现。处理显示对象事件时需要记住的一个重要问题是:从显示列表中删除显示对象时,事件侦听器的存在将会对是否从内存中自动删除显示对象(垃圾回收)产生影响。如果显示对象拥有订阅为其事件的侦听器的对象,即使从显示列表中删除了显示对象,也不会从内存中删除显示对象,因为显示对象仍然拥有到这些侦听器对象的引用。7.2.5适当选择DisplayObject子类(1)如果不需要可作为其它显示对象的容器的对象(即只需要用作独立屏幕元素的对象),请根据使用目的选择DisplayObject或InteractiveObject两个子类中的一个:用于显示位图图像的Bitmap。用于添加文本的TextField。用于显示视频的Video。用于绘制屏幕内容的“画布”的Shape。用于Flash具体创作项的MorphShape、StaticText或SimpleButton。(2)如果需要使用变量来引用主舞台,请使用Stage类作为其数据类型。(3)如果需要容器来加载外部SWF文件或图像文件,请使用Loader实例。(4)如果需要将一个对象用作其它显示对象的容器(无论是否还要使用ActionScript在显示对象上进行绘制),请选择其中一个DisplayObjectContainer子类:如果对象是只使用ActionScript创建的,或者如果对象作为只使用ActionScript创建和处理的自定义显示对象的基类,请选择Sprite。如果通过创建变量来引用在Flash创建的影片剪辑元件,请选择MovieClip。(5)如果要创建的类与Flash库中的影片剪辑元件关联,请选择其中一个DisplayObjectContainer子类作为该类的基类:如果关联的影片剪辑元件在多个帧上有内容,请选择MovieClip。如果关联的影片剪辑元件仅在第一帧上有内容,请选择Sprite。7.2.6显示对象的舞台表现改变位置要设置显示对象的位置,请更改对象的x和y属性。(2)平移和滚动显示对象使用scrollRect属性定义显示对象的可查看区域。

(3)处理大小和缩放对象可以采用两种方法来测量和处理显示对象的大小:使用尺寸属性(width和height)或缩放属性(scaleX和scaleY)。(4)缓存显示对象将显示对象的cacheAsBitmap属性设置为true.DisplayObject类的opaqueBackground属性和scrollRect属性与使用cacheAsBitmap属性的位图缓存有关。尽管这三个属性彼此互相独立,但是,当对象缓存为位图时,opaqueBackground和scrollRect属性的作用最佳,只有将cacheAsBitmap设置为true时,才能看到opaqueBackground和scrollRect属性带来的性能优势。(5)应用混合模式每个显示对象都有blendMode属性.

(6)调整DisplayObject颜色

使用ColorTransform类的方法(flash.geom.ColorTransform)来调整显示对象的颜色。

(7)旋转对象使用rotation属性可以旋转显示对象。

(8)淡化对象将alpha属性设置为介于0和1之间的任何值,其中0表示完全透明,1表示完全不透明。

(9)遮罩显示对象将遮罩对象设置为被遮罩的显示对象的mask属性.(10)动态加载显示内容Loader类可以加载这些资源。///////////////////////////////http://///7.3案例——图形堆叠处理程序7.3.1案例任务描述该案例是以第三章的3.2小节的案例“创建图形类程序”geometricshapes案例应用程序的基础上构建的。主要的功能对若干个图形进行堆叠处理,即程序可以动态向舞台添加任意选中的、可定制大小的图形,多个图形添加到舞台后,可以调整其堆叠次序,即上下覆盖的层次,并显示输出这些层次。

7.3.2操作流程程序功能演示;

学生动手练习.7.3.3案例小结该案例程序实现了处理显示对象的许多技术,如扩展显示对象类、在显示列表中添加对象、分层显示对象和处理显示对象容器、响应显示对象事件、使用显示对象的属性和方法等。程序中在画布上添加显示对象、单击鼠标并拖动对象、重新排列显示对象层等具体方法实现的功能很实用,是操作显示对象常用的方法和技术,应该熟练掌握。7.4图形绘制API

绘图API是ActionScript中的一项内置功能的名称,可以使用该功能来创建矢量图形如直线、曲线、形状、填充和渐变等,并使用ActionScript在屏幕上显示它们。(1)Graphics类每个Shape、Sprite和MovieClip对象都具有一个graphics属性,它是Graphics类的一个实例。Graphics类包含用于绘制线条、填充和形状的属性和方法。(2)直线和曲线绘制使用Graphics实例进行的所有绘制均基于包含直线和曲线的基本绘制。(3)使用内置方法绘制形状为了便于绘制常见形状如圆、椭圆、矩形以及带圆角的矩形等,AS3.0中提供了用于绘制这些常见形状的方法。(4)创建渐变线条和填充

graphics对象也可以绘制渐变笔触和填充,而不是纯色笔触和填充。渐变笔触是使用lineGradientStyle()方法创建的;渐变填充是使用beginGradientFill()方法创建的.(5)将Math类与绘制方法配合使用

Math.sin()、Math.cos()和Math.tan()

(6)使用绘图API进行动画处理使用绘图API创建内容的一个优点是,并不限于将内容放置一次。可通过保留和修改用于绘制的变量来修改所绘制的内容。可以通过更改变量和重绘(在一段帧上或使用计时器)来利用原有的动画。///////////////////////////////http://///7.5案例——自选图形绘制程序7.5.1案例任务描述该案例实现的是使用AS3.0的绘图API,通过画线和填充,使用鼠标从左上到右下画出矩形形状时,则绘制出选中的几何图形椭圆或矩形。并将绘制的图形对象,绑定鼠标点击事件,当鼠标点击图形时,将其从画布上删除。7.5.2操作流程

程序功能演示;

学生动手练习.7.5.3案例小结该案例实现了如何使用绘图API画线并填充生成相应的几何图形,以及如何删除图形等。程序中使用MovieClip类的生成显示对象,调用其属性Graphic类及方法,进行几何图形的绘制、填充颜色等。使用该方法还有一好处时,清除时较方便,直接调用Graphic类的clear()方法即可。程序中还使用了ComboBox、NumericStepper等组件,这些用作用户界面的常用组件,常用于用户交互操作界面的实现。7.6处理位图

图像使用两种类型:位图和矢量。位图图形也称为光栅图形,由排列为矩形网格形式的小方块(像素)组成。矢量图形由以数学方式生成的几何形状(如直线、曲线和多边形)组成。位图文件格式

GIF、JPG和PNG

(2)位图的透明度

(3)Bitmap和BitmapData类

Bitmap类用于在屏幕上显示位图图像,BitmapData类用于访问和操作位图的原始图像数据。(4)处理像素

BitmapData类包含一组用于处理像素数据值的方法。

(5)复制位图数据从一个图像向另一个图像中复制位图数据,使用多种方法:clone()、copyPixels()、copyChannel()和draw()。(6)滚动位图

scroll()方法可以复制屏幕上的位图,然后将它粘贴到由(x,y)参数指定的新偏移位置7.7案例——拼图小游戏程序7.7.1案例任务描述该案例实现的是使用Bitmap和BitmapData类,将图像切割成八块随机放置,再重新拼接成原图。程序中随着对切割后形成的小块图像,绑定鼠标拖放事件处理函数,达到可以再重排拼接的效果,如拼接错误则等待需要重新调整,如拼接正确则刷新屏幕,并随机调入新的图像进行拼接。7.7.2操作流程程序功能演示;

学生动手练习.7.7.3案例小结该案例主要通过Bitmap类、BitmapData类,实现位图数据的复制、移动、索引等管理功能,从而实现拼图小游戏的程序。程序中没有任何设计界面,全部在时间轴上完成程序功能的代码,这些程序代码实现了作为可视对象的位图,在舞台上添加、图像容器及其装载图像、切割图像、移动图像、索引组装图像等功能。7.8颜色及其变换(1)RGB颜色模型

Flash使用RGB颜色模型,每一种颜色都由红、绿、蓝构成。颜色指定为数字,使用uint类型来保存,由三个字节构成,计24位色,共计约有1380万种的颜色。在ActionScript中,使用十六进制形式来表示颜色值:0xRRGGBB,即24位色表示法。还有32位色表示,另增加8位表示透明度,十六进制的表示形式为0xAARRGGBB,AA代表透明度值。在使用时,是24位色,还是32位色,取决于使用的特定函数。

//24位合成色的提取red=color24>>16;green=color24>>8&0xFF;blue=color24&0xFF;

//32位合成色的提取alpha=color32>>24;red=color32>>16&0xFF;green=color32>>8&oxFF;blue=color32&oxFF;

(2)颜色变换对于Sprite、MovieClip或其他显示对象,都有一个称为transform的属性,它是flash.geom.Transform类的一个实例,包含了可以用来进行缩放、旋转、定位、颜色等各种属性。

importflash.geom.ColorTransformmySprite.transform.colorTransform=newColorTransform(rm,gm,bm,am,rOffset,gOffset,bOffset,aOffset)

7.9案例——图片颜色变换小程序7.9.1案例任务描述该案例实现的是使用BitmapData类的colorTransform方法,对位图数据进行颜色变换功能。程序中对指定图片,分割成4个矩形区域,根据不同的颜色变换参数,使用colorTransform方法对相应矩形区域的位图数据进行颜色变换。7.9.2操作流程程序功能演示;

学生动手练习.7.9.3案例小结该案例主要展现的是BitmapData类的colorTransform方法的用法。设置的参数不同,往往得到不同的颜色变换效果。在AS3.0的编程实践中,显示对象的颜色变换,往往不是单独进行的,而是常伴随着先进行平移、缩放、旋转等物理变换。7.10过滤显示对象AS3.0包括九种可应用于任何显示对象或BitmapData实例的滤镜。(1)创建和应用滤镜使用滤镜可以对位图和显示对象应用从投影到斜角和模糊等各种效果。创建了滤镜对象的实例后,通过使用该对象的filters属性可以很容易地将此实例应用于显示对象;如果是BitmapData对象,可以使用applyFilter()方法。importflash.filters.BevelFilter;importflash.filters.GlowFilter;//创建滤镜并将其添加到数组。varbevel:BevelFilter=newBeve

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论