《二维动画制作Flash CS3案例教程》第7章 面向对象的程序设计_第1页
《二维动画制作Flash CS3案例教程》第7章 面向对象的程序设计_第2页
《二维动画制作Flash CS3案例教程》第7章 面向对象的程序设计_第3页
《二维动画制作Flash CS3案例教程》第7章 面向对象的程序设计_第4页
《二维动画制作Flash CS3案例教程》第7章 面向对象的程序设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

第7章面向对象的程序设计

知识概述:

1.了解面向对象编程的基本概念,初步掌握创建对象和访问对象的方法。

2.初步掌握键盘(Key)对象、鼠标(Mouse)对象、声音(Sound)对象、时间(Date)对象和颜色(Color)对象的基本使用方法。

3.初步掌握面向对象程序设计的基本方法和常用技巧。

7.1键盘和鼠标对象—【任务36】按键控制飞鸟

【知识储备】 1.面向对象编程的基本概念 在结构化的程序设计中,我们要解决某一个问题,是将问题进行分解,然后用许多功能不同的函数来实现,数据与函数是分离的。面向对象的程序设计能够有效地改进结构化程序设计中存在的问题,它采用面向对象的方法来解决问题,不再将问题分解为过程,而是将问题分解为对象,要解决问题必须首先确定这个问题是由哪些对象组成的。对象是现实世界中可以独立存在的、可以被区分的一个实体(也可以是一些概念上的实体),它有自己的属性、作用于对象的操作(即作用于对象的方法)和对象响应的动作(即事件)。对象之间的相互作用通过消息传送来实现。因此面向对象编程的设计模式为“对象+消息”。在面向对象的编程中,有几个很重要的基本概念:类、对象、属性、方法、实例和继承等。所谓的“类”,可以打一个比喻,月饼模子可以看成是一个“类”,扣出的月饼是对象,每个月饼都继承了模子(类)的属性,比如模子的形状是菱形,那扣出来的月饼就是菱形。每个月饼对象都具有它自己的特有属性,例如,某个月饼的馅有蛋黄,某个月饼的馅有枣泥。通过一些方法可以改变这些属性,例如把月饼切成四份等。在面向对象的编程中,对象是属性和方法的集合,程序是由对象组成的。实例是类的对象,Flash中的按钮、影片剪辑和图形实例都是类的对象。类的每个实例都继承了类的属性和方法,例如,所有影片剪辑实例都是MovieClip类的实例,可以将MovieClip类的任何方法和属性应用于影片剪辑实例。属性是对象的特性,方法是与类关联的函数,是为了完成对对象属性进行操作的函数,通过函数改变对象属性的值。面向对象的程序设计是将问题抽象成许多类,将对象的属性和方法封装成一个整体,237

“供程序设计者使用。2.创建对象和访问对象(1)创建对象:可以使用new操作符通过Flash内置对象类来创建一个对象。myDate=newdate();”这条语句就是使用了Flash8的日期类创建了一个新对象(也叫实例化)。这里,对象myDate可以使用内置对象date()的getDate()等方法和属性。使用new操作符来创建一个对象需要使用构造函数(构造函数是一种简单的函数,它用来创建某一类型的对象)。ActionScript的内置对象也是一种提前写好的构造函数。(2)访问对象:可以使用点操作符来访问对象的属性,在点操作符的左边写入对象名,点操作符右边写入要使用的对象。例如下面程序中,Sound1是对象,setVolume()是方法,通过点操作符来连接。Sound1=newsound(this);//实例化一个声音对象Sound1Sound1.setVolume(30);//设置声音对象Sound1的音量为30238

3.键盘(Key)对象 键盘对象可以从“动作”面板命令列表区的“ActinScript2.0类”→“影片”→“Key”目录中找到。键盘(Key)对象的常用的常数如表7-1所示。 (1)键盘(Key)对象不需要经过new声明就可以使用它的方法和常数。

4.键盘对象侦听器 键盘(Key)对象侦听器(Listener)是用来侦听键盘的敲击状态。使用它涉及到4个方法。 (1)addListener方法

【格式】Key.addListener(newListener); 【功能】用来注册一个侦听器(Listener)对象,以接受来自onKeyDown和onKeyUp的状态。当某个按键按下或松开时,不论输入的方式如何,它会视状况调用addListener内注册的对象的onKeyDown和onKeyUp两个方法。可以同时有多个对象来侦听键盘的敲击状态。参数newListener是一个具有onKeyDown和onKeyUp两个方法的函数对象名称。例如:Key.addListener(myListener);//将具有onKeyDown和onKeyUp两个方法的函数myListener指

239

定为侦听键盘按键的函数对象。 (2)removeListener方法

【格式】Key.removeListener(Listener); 【功能】用来删除参数Listener指定的与侦听器(Listener)关联的函数的关联,删除成功时返回true,否则返回false。例如:Key.removeListener(myListener);//删除函数myListener

(3)onKeyDown方法

【格式】someListener.onKeyDown=function(){…语句…} 【功能】用来产生当键盘的按键被按下时的后续动作。使用前必须先建立一个Listener对象,再定义一个函数给这个对象,并使用addListener方法注册键盘(Key)对象为Listener。someListener是要设置为Listener的对象(Objiect)名称。例如:myListener=newObject();//建立一个Listener对象myListener.onKeyDown=function(){myval=true};

240

//当按键按下时,myval的值为trueKey.addListener(myListener);//注册一个侦听器,建立按键与myListener函数对象的关联

(4)onKeyUp方法

【格式】someListener.onKeyUp=function(){…语句…} 【功能】用来产生当键盘的按键被松开时的后续动作。

5.鼠标(Mouse)对象 鼠标(Mouse)对象不需要实例化。可以从“动作”面板命令列表区的键盘对象可以从“动作”面板命令列表区的“ActinScript2.0类”→“影片”→“mouse”目录中找到。 (1)hide方法

【格式】Mouse.hide() 【功能】隐藏鼠标指针。 (2)show方法

【格式】Mouse.show() 【功能】显示鼠标指针。

241

(3)addListener方法

【格式】Mouse.addListener(newListener); 【功能】用来注册一个侦听器(Listener)对象,以接受来自onMousDown、onMouseUp和onMouseMove的状态。当某个按键按下、松开或经过时,不论输入的方式如何,它会视状况调用addListener内注册的对象的onMousDown、onMouseUp和onMouseMove三个方法。可以同时有多个对象来侦听鼠标的按键状态。参数newListener是一个具有onMousDown、onMouseUp和onMouseMove三个方法的函数对象名称。例如:Mouse.addListener(myListener);//将具有onMousDown、onMouseUp和onMouseMove三个方法的函数myListener指定为侦听鼠标的按键状态的函数。 (4)removeListener方法

【格式】Mouse.removeListener(Listener); 【功能】用来删除参数Listener指定的与侦听器(Listener)关联的函数的关联,删除成功时返回true,否则返回false。例如:

242

Mouse.removeListener(myListener);//删除函数myListener

(5)onMouseDown方法

【格式】someListener.onKeyDown=function(){…语句…} 【功能】用来产生当鼠标的按键被按下时的后续动作。使用前必须先建立一个Listener对象,再定义一个函数给这个对象,并使用addListener方法注册鼠标(Mouse)对象为Listener。someListener是要设置为Listener的对象(Object)名称。

7.2声音对象—【任务37】播放外部MP3 【知识储备】 1.声音(Sound)对象的构造函数

【格式】newSound([target])

其中的参数target是Sound对象操作的影片剪辑实例。此参数是可选的。可采用“mySound=newSound();”或“mySound=newSound(target);”命令。

【功能】使用new操作符实例化sound对象,即为指定的影片剪辑创建新的Sound对象。如果

243

没有指定目标实例target(目标),则Sound对象控制影片中的所有声音。如果指定target,则只对指定的对象起作用。实例1、下面的实例创建了一个名字为和hsound1的Sound对象新实例。程序中的第二行调用setVolume方法并将影片中的所有声音的音量调整为60%。hsound1=newSound();hsound1.setVolume(60);实例2、下面的实例创建Sound对象的新实例moviesound,将目标影片剪辑myMovie传递给它,然后调用start方法,播放myMovie中的所有声音。moviesound=newSound(myMovie);moviesound.start();2.声音(Sound)对象的方法和属性(1)mySound.attachSound方法【格式】mySound.attachSound(“idName”)【功能】将“库”面板内的指定的声音元件载入场景中。也就是将“库”面板中的一个声音元件绑定,绑定后就可以用声音的其他方法来控制声音的各个属性。其中,“idName”是指库中声音元件244

的链接标识符(即ID)名称,它是在“链接属性”对话框“标识符”文本框中输入的。右击“库”面板中的声音元件,调出快捷菜单,单击“链接”菜单命令,可调出如图7-4所示的“链接属性”对话框。在“标识符”文本框内输入元件的链接标识符名称,再选择第1和第3个复选框,需要的话还应该在“URL”文本框内输入URL数据,单击“确定”按钮退出。图

7­4

“链接属性”对话框(2)start方法【格式】sound.start()245

【功能】开始播放当前的声音对象。(3)stop方法【格式】sound.stop()【功能】停止正在播放的声音对象。(4)setVolume方法【格式】sound.setVolume(n)【功能】用来设置当前声音对象音量的大小。其中参数n可以是一个整数值或一个变量,其值为0到100之间的整数,0为无声,100是最大音量。(5)sound.getVolume方法【格式】sound.getVolume()功能:返回一个0到100之间的整数,该整数是当前声音对象的音量,0是无音量,100是最高音量。可以将sound.getVolume()的值赋给一个变量。它的默认值是100。(6)mySound.setPan方法246

【格式】mySound.setPan(pan)

其中,参数pan是一个整数,它指定声音的左右均衡。它的有效值范围为-100到100,其中-100表示仅使用左声道,100表示仅使用右声道,而0表示在两个声道间平均地均衡声音。

【功能】用来确定声音在左右声道中如何播放。对于单声道声音,pan确定声音通过哪个声道播放。例如:下面的例子创建一个声音(Sound)对象实例S,并附加一个来自“库”面板的链接标识符为“S1”的声音。它还调用setVolume和setPan方法来控制“S1”声音。

onClipEvent(mouseDown){ S=newSound(this);//创建一个声音对象S S.attachSound("S1"); S.setVolume(80); S.setPan(-70);S.start();//开始播放声音对象}

(7)mySound.getPan方法

【格式】mySound.getPan() 【功能】这个方法返回在上一次使用setPan方法时设置的pan值,它是一个从-100到100之间

247

的整值,这个值代表左右声道的音量,-100到0是左声道的值,0到100是右声道的值(0平衡地设置左右声道)。该面板设置控制影片中当前和将来声音的左右均衡。此方法是用setVolume或setTransform方法累积的。(8)mySound.loadSound方法【格式】mySound.loadSound("url",isStreaming)其中,url是MP3声音文件在服务器上的位置。isStreaming是一个布尔值,它指示声音是事件声音还是流声音。【功能】将MP3文件加载到声音(Sound)对象的实例中。可以使用isSteaming参数指示该声音是一个事件(Event)声音还是一个流(Streaming)声音。事件声音在完全加载后才能播放。流声音在下载的同时播放。当接收的数据足以启动解压缩程序时,播放开始。与事件声音一样,流声音仅存在于虚拟内存中,不能将其下载到硬盘。例如:下面的实例是加载事件声音。S1.loadSound("http://serverpath:port/mp3filename",false);例如:下面的实例是加载流声音。248

s.loadSound("http://serverpath:port/mp3filename",true);(9)mySound.setTransform方法【格式】mySound.setTransform(soundTransformObject)其中,参数soundTransformObject是一个使用Object对象的创建的声音变化对象的名称。【功能】用来设置声音对象的变化值,其中mySound是一个使用声音对象创建的对象名称。其中属性有:ll(控制左声道进入左扬声器音量)、lr(控制右声道进入左扬声器音量)、rr(控制右声道进入右扬声器音量)、rl(控制左声道进入右扬声器音量)。它们取值为-100到100。通过下面的公式可以计算左右音量的大小:左输出=左输入*ll+右输入*lr,右输出=右输入*rr+左输入*rl。如果不指定这几个属性,系统默认为:ll=100,lr=0,rr=100,rl=0。可以首先使用Object对象创建一个声音变化对象,然后再通过这个声音变化对象设置声音对象mySound的4个属性。例如:mySound.attachSound("thisSong");//利用attachSound方法绑定一个声音myTransformObject=newObject();//构造一个声音变化对象myTransformObjectmyTransformObject.ll=50;myTransformObject.lr=50;249

myTransformObject.rr=50;myTransformObject.rl=50;//将立体声音的左右输入平均分配给扬声器,形成单声道mySound.setTransform(myTransformObject);//将声音变化对象myTransformObject传递给setTransform方法(10)mySound.getTransform方法【格式】mySound.getTransform();【功能】返回最后一次mySound.setTransform方法所设置的声音对象的变化值。(11)Sound.getBytesLoaded方法【格式】Sound.getBytesLoaded()【功能】返回指示所加载字节数的整数。返回为指定声音(Sound)对象加载(进入流)的字节数。可以比较getBytesLoaded的值与getBytesTotal的值,以确定已加载声音的百分比。(12)Sound.getBytesTotal方法【格式】Sound.getBytesTotal()【功能】返回一个整数,以字节为单位指示指定声音(Sound)对象的总大小。250

(13)duration属性【格式】mySound.duration【功能】它是只读属性。给出声音的持续时间,以毫秒为单位。(14)position属性【格式】mySound.position【功能】它是只读属性。给出声音已播放的毫秒数。如果声音是循环的,则在每次循环开始时,位置将被重置为0。7.3时间对象—【任务38】荧光数字表【知识储备】1.时间(Date)对象实例化的格式时间(Date)对象是将计算机系统的时间添加到对象实例中去。时间对象可以从“动作”面板命令列表区的“ActinScript2.0类”→“核心”→“Date”目录中找到。时间(Date)对象实例化的格式如下。251

myDate=newdate();2.时间对象的常用方法时间对象的常用方法如表7-3所示。7.4颜色对象—【任务39】RGB调色板【知识储备】颜色(Color)对象可以从“动作”面板命令列表区的“ActinScript2.0类”→“影片”→“Color”目录中找到。1.颜色(Color)对象实例化的格式【格式】myColor=newColor(target);【功能】实例化一个颜色对象target。参数target是用来指定影

温馨提示

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

评论

0/150

提交评论