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

上传人:b****3 文档编号:5404789 上传时间:2023-05-08 格式:DOCX 页数:46 大小:2.22MB
下载 相关 举报
第7章面向对象的程序设计.docx_第1页
第1页 / 共46页
第7章面向对象的程序设计.docx_第2页
第2页 / 共46页
第7章面向对象的程序设计.docx_第3页
第3页 / 共46页
第7章面向对象的程序设计.docx_第4页
第4页 / 共46页
第7章面向对象的程序设计.docx_第5页
第5页 / 共46页
第7章面向对象的程序设计.docx_第6页
第6页 / 共46页
第7章面向对象的程序设计.docx_第7页
第7页 / 共46页
第7章面向对象的程序设计.docx_第8页
第8页 / 共46页
第7章面向对象的程序设计.docx_第9页
第9页 / 共46页
第7章面向对象的程序设计.docx_第10页
第10页 / 共46页
第7章面向对象的程序设计.docx_第11页
第11页 / 共46页
第7章面向对象的程序设计.docx_第12页
第12页 / 共46页
第7章面向对象的程序设计.docx_第13页
第13页 / 共46页
第7章面向对象的程序设计.docx_第14页
第14页 / 共46页
第7章面向对象的程序设计.docx_第15页
第15页 / 共46页
第7章面向对象的程序设计.docx_第16页
第16页 / 共46页
第7章面向对象的程序设计.docx_第17页
第17页 / 共46页
第7章面向对象的程序设计.docx_第18页
第18页 / 共46页
第7章面向对象的程序设计.docx_第19页
第19页 / 共46页
第7章面向对象的程序设计.docx_第20页
第20页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《第7章面向对象的程序设计.docx》由会员分享,可在线阅读,更多相关《第7章面向对象的程序设计.docx(46页珍藏版)》请在冰点文库上搜索。

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

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

第7章

面向对象的程序设计

本章学习目标:

面向对象的程序设计(Object-OrientedProgramming,简记为OOP)具备更好地模拟现实世界环境的能力,这使它被公认为是自上而下编程的优胜者。

它通过给程序中加入扩展语句,把函数“封装”进编程所必需的“对象”中。

面向对象的编程语言使得复杂的工作条理清晰、编写容易。

说它是一场革命,不是对对象本身而言,而是对它们处理工作的能力而言。

本章主要讲解了关于ActionScript面向对象的程序设计,通过对复制对象、拖拽对象、跟随对象、改变对象的属性值等实例的讲解,让读者在感受不同的绚丽效果的同时领悟到程序可以带给你们无限创意的想像,并更让读者对元件以及面向对象程序设计有了进一步深层次的理解原理和精髓,这便是程序的魅力所在,更是Flash灵魂所在。

本章重点和难点:

●掌握面向对象的基本概念

●掌握面向对象的特性

●掌握面向对象的分析和设计方法

7.1【案例23】绿色圆形复制

案例效果:

“绿色圆形复制.swf”播放画面如图7-1-1所示。

画面由大量不同透明度的绿色圆形组合而成,这些圆形都是由一个圆形的原型通过ActionScript代码复制出来,并产生左边运动到右边的效果。

图7-1-1“大量圆形向右跑”的效果

设计步骤:

(1)在舞台中绘制一个圆,如图7-1-2所示。

图7-1-2“图层1”的绿色圆形图7-1-3把圆形的影片剪辑取名为yuan

(2)将圆形转换为影片剪辑元件,将实例名称命名为yuan,如图7-1-3所示。

(3)单击影片剪辑元件,打开动作面板输入ActionScript代码,如图7-1-4所示。

图7-1-3圆形的影片剪辑的动作代码图7-1-4图层1的第一个关键帧的动作代码

(4)单击时间轴第1关键帧,在动作面板中输入ActionScript代码,如图7-1-4所示。

(5)制作完毕后,保存为复制元件.fla,测试影片。

知识进阶:

1.duplicateMovieClip函数

duplicateMovieClip(MovieClip.duplicateMovieClip方法)

publicduplicateMovieClip(name:

String,depth:

Number,initObject:

Object]):

MovieClip

在SWF文件正在播放时,创建指定影片剪辑的实例。

无论调用duplicateMovieClip()方法时原始影片剪辑位于哪一帧,所复制的影片剪辑始终从第1帧开始播放。

父级影片剪辑中的变量不复制到重复的影片剪辑中。

在调用父影片剪辑的duplicateMovieClip()方法时,由duplicateMovieClip()方法创建的子影片剪辑不会被复制。

如果删除父级影片剪辑,则重复的影片剪辑也被删除。

如果您已经使用MovieClip.loadMovie()或MovieClipLoader类加载了影片剪辑,则SWF文件的内容不被复制。

这意味着您无法通过加载JPEG、GIF、PNG或SWF文件并接着复制影片剪辑来节省带宽。

将此方法与duplicateMovieClip()的全局函数版本进行对比。

此方法的全局版本需要指定要复制的目标影片剪辑的参数。

对于MovieClip类版本,这样的参数是不必要的,因为该方法的目标是对其调用该方法的影片剪辑实例。

此外,duplicateMovieClip()的全局版本既不支持initobject参数,也不支持对新创建的MovieClip实例的引用的返回值。

参数:

name:

String-已重制的影片剪辑的唯一标识符。

depth:

Number-一个唯一整数,指定要放置新影片剪辑的深度。

使用深度-16384可将新影片剪辑实例放置在创作环境中创建的所有内容之下。

介于-16383和-1(含)之间的值是保留供创作环境使用的,不应与此方法一起使用。

其余的有效深度值介于0和1048575之间。

initObject:

Object[可选]-(FlashPlayer6和更高版本支持。

)包含用于填充复制影片剪辑的属性的对象。

此参数使动态创建的影片剪辑能够接收剪辑参数。

如果initObject不是对象,则忽略它。

initObject的所有属性都已复制到新实例中。

使用initObject指定的属性对于构造函数是可用的。

2.removeMovieClip函数

removeMovieClip(target:

Object)

删除指定的影片剪辑。

参数:

target:

Object-用duplicateMovieClip()创建的影片剪辑实例的目标路径,或者是用MovieClip.attachMovie()、MovieClip.duplicateMovieClip()或MovieClip.createEmptyMovieClip()创建的影片剪辑的实例名称。

3.onClipEvent处理函数

onClipEvent(movieEvent:

Object){

//yourstatementshere

}

触发为特定影片剪辑实例定义的动作。

参数:

movieEvent:

Object-movieEvent是一个称为事件的触发器。

当事件发生时,执行该事件后面大括号({})中的语句。

可以为movieEvent参数指定下面的任一值:

✧load影片剪辑一旦被实例化并出现在时间轴中,即启动此动作。

✧unload在从时间轴中删除影片剪辑之后,此动作即在第1帧中启

动。

在将任何动作附加到受影响的帧之前处理与Unload影片剪辑事件关联的动作。

✧enterFrame以影片剪辑的帧频连续触发该动作。

在将任何帧动作附

加到受影响的帧之前处理与enterFrame剪辑事件关联的动作。

✧mouseMove每次移动鼠标时启动此动作。

使用_xmouse和

_ymouse属性来确定鼠标的当前位置。

✧mouseDown当按下鼠标左键时启动此动作。

✧mouseUp当释放鼠标左键时启动此动作。

✧keyDown当按下某个键时启动此动作。

使用Key.getCode()检索

有关最后按下的键的信息。

✧keyUp当释放某个键时启动此动作。

使用Key.getCode()方法检索

有关最后按下的键的信息。

✧data在loadVariables()或loadMovie()动作中接收到数据时启动

该动作。

当与loadVariables()动作一起指定时,data事件只在加载最后一个变量时发生一次。

当与loadMovie()动作一起指定时,则在检索数据的每一部分时,data事件都重复发生。

案例进阶:

【进阶案例59】线的复制效果

案例效果:

“线条复制效果.swf”播放画面如图7-1-5所示。

由一线条生成多线条变化的效果,单击“删除mc”按钮,则绚丽的线条就消失了,但如果单击“向前”按钮,显示一种绚丽的线条效果,单击“后退”按钮,又会显示另一种绚丽的线条效果。

(a)(b)

图7-1-5“线条复制”的演示效果

设计步骤:

(1)新建一flash文档,设置为550*400,背景色为黑色。

(2)新建一影片剪辑元件,命名为line。

进入元件编辑界面,在图层1的第1帧绘制一条直线,然后在第25帧和第50帧处按F6键,利用任意变形工具

改变第1,23,47帧的直线的形状,然后创建形状补间动画,时间轴如图7-1-6所示。

图7-1-6“line”影片剪辑的动画时间轴

(3)回到主场景。

把图层1命名为按钮,在第1帧创建一个“删除mc”按钮和一个“播发”按钮,如图7-1-7所示,在第2帧再创建一个“后退”按钮,如图7-1-8所示。

图7-1-7“删除mc”按钮和“向前”按钮图7-1-8“向后”按钮

(4)在按钮图层上方再创一图层,命名为mc,如图7-1-9所示。

把line影片剪辑拖入场景中间,并命名为line_mc,如图7-1-10所示。

图7-1-9“line”影片剪辑所处的图层图7-1-10“line”影片剪辑取名line_mc

(5)在mc图层上方再创一图层,命名为as,在第1帧添加代码,如图7-1-11所示。

图7-1-11as层中第1帧的动作代码

(6)在第2帧添加代码,如图7-1-12所示。

图7-1-12as层中第2帧的动作代码

(7)在删除按钮上添加代码,如图7-1-13所示。

图7-1-13“删除mc”按钮的动作代码

(8)在播发按钮上添加代码,在后退按钮上添加代码,如图7-1-14所示。

(a)“播发”按钮的按钮代码(b)“后退”按钮的按钮代码

图7-1-14“播发”按钮和“后退”按钮的动作代码

(9)制作完毕后,保存为复制效果.fla,测试影片。

【进阶案例60】下雨效果

案例效果:

“下雨效果.swf”播放画面如图7-1-15所示。

通过复制一粒雨水落下的动画,呈现出一场春雨的效果。

图7-1-15一场春雨的效果

设计步骤:

(1)新建一flash文档,设置为550*400,背景色为白色。

(2)画一条白线,将直线图形转换为影片剪辑元件,如图7-1-16所示,命名为zz,如图7-1-17所示。

双击影片剪辑元件,进入元件编辑界面,在图层1第10帧处创建一个下落的动画,再加一图层,创建椭圆放大消失的动画,如图7-1-18所示。

图7-1-16白色线条处在下雨效果层图7-1-17白色线条影片剪辑取名zz

图7-1-18“图层1”前10帧为线条下落动画,

“图层2”的第10帧到15帧为椭圆消失动画

(3)返回主场景,添加上背景层和as层。

(4)在背景层导入背景图片,在as层的第1帧添加如下代码,如图7-1-19所示。

图7-1-19as层的第1帧的动作代码

(5)制作完毕后,保存为下雨效果.fla,测试影片。

【进阶案例61】椭圆的复制与删除

案例效果:

“椭圆的复制与删除.swf”播放画面如图7-1-20所示。

单击“复制mc”按钮来实现复制椭圆的效果。

(a)单击“复制mc”按钮复制出一个椭圆(b)单击“删除mc”按钮删除出一个椭圆

图7-1-20“椭圆的复制与删除”效果图

设计步骤:

(1)打开flash文档,设置为550*300.背景为黑色。

(2)新建一名为yuan的影片剪辑,画一个圆从左边走到中间的补间动画。

回到主场景,把影片剪辑放到mc层,如图7-1-21所示,命名为yuan_mc,并拖到主场景的左边,再第2帧按F5,如图7-1-22所示。

图7-1-21“yuan”影片剪辑所处的图层图7-1-22“line”影片剪辑取名line_m

(3)新建一个图层,命名为按钮,创建一个“复制mc”按钮和一个“删除mc”按钮,如图7-1-22所示。

图7-1-22“复制mc”按钮和“删除mc”按钮

(4)添加一个as层,在第1帧添加代码,如图7-1-23所示。

图7-1-23as层第1帧的动作代码

(5)在“复制mc”按钮上添加代码,如图7-1-24所示。

图7-1-24“复制mc”按钮的动作代码

(6)在“删除mc”按钮上添加代码,如图7-1-25所示。

图7-1-25“删除mc”按钮的动作代码

(7)制作完毕后,保存为圆的复制.fla,测试影片。

7.2【案例24】鼠标跟随

案例效果:

“鼠标跟随.swf”播放画面如图7-2-1所示。

动动你的鼠标,画面中显示不同颜色的球跟随着鼠标的运动轨迹的效果。

图7-2-1不同颜色的球跟随鼠标运动的效果

设计步骤:

(1)在主场景中制作一个绕园环运动的绿球,如图7-2-2所示,将绿球转换为影片剪辑元件,实例名称为qiu0,如图7-2-3所示。

图7-2-2绿球影片剪辑所处的图层图7-2-3绿球影片剪辑取名qiu0

(2)在as层,添加代码,如图7-2-4所示。

图7-2-4as层第1帧的动作代码

(3)制作完毕后,保存为鼠标跟随.fla,测试影片。

知识进阶:

1._root属性

_root.movieClip

_root.action

_root.property

指定或返回一个对根影片剪辑时间轴的引用。

如果影片剪辑有多个级别,则根影片剪辑时间轴位于包含当前正在执行脚本的级别上。

例如,如果级别1中的脚本计算_root,则返回_level1。

指定_root与在当前级别内使用不推荐的斜杠记号(/)指定绝对路径的效果相同。

注意:

如果包含_root的影片剪辑被加载到另一个影片剪辑中,则_root指的是加载影片剪辑的时间轴,而不是包含_root的时间轴。

如果要确保_root指的是被加载的影片剪辑的时间轴(即使该影片被加载到另一个影片剪辑中),请使用MovieClip._lockroot。

2._x(Button._x属性)

public_x:

Number

整数,用来设置按钮相对于父级影片剪辑的本地坐标的x坐标。

如果按钮在主时间轴上,则其坐标系统将舞台的左上角作为(0,0)。

如果按钮在具有变形的影片剪辑内,则该按钮位于包含它的影片剪辑的本地坐标系统中。

因此,对于逆时针旋转90度的影片剪辑,其中的按钮将继承逆时针旋转90度的坐标系统。

按钮的坐标指的是注册点的位置。

3._y(Button._y属性)

public_y:

Number

按钮相对于父级影片剪辑的本地坐标的y坐标。

如果按钮在主时间轴上,则其坐标系统将舞台的左上角作为(0,0)。

如果按钮在具有变形的另一个影片剪辑内,则该按钮将位于包含它的影片剪辑的本地坐标系统中。

因此,对于逆时针旋转90度的影片剪辑,其中的按钮将继承逆时针旋转90度的坐标系统。

按钮的坐标指的是注册点的位置。

4._alpha(Button._alpha属性)

public_alpha:

Number

由my_btn指定的按钮的Alpha透明度值。

有效值为0(完全透明)到100(完全不透明)。

默认值为100。

按钮的_alpha设置为0时,其中的对象处于活动状态(即使这些对象不可见)。

5._rotation(Button._rotation属性)

public_rotation:

Number

按钮距其原始方向的旋转程度,以度为单位。

从0到180的值表示顺时针方向旋转;从0到-180的值表示逆时针方向旋转。

对于此范围之外的值,可以通过加上或减去360获得该范围内的值。

例如,my_btn._rotation=450语句与my_btn._rotation=90是相同的。

6.random函数

random(value:

Number):

Number

自FlashPlayer5后不推荐使用。

不推荐使用此函数,而推荐使用Math.random()。

返回一个随机整数,此整数介于0和小于在value参数中指定的整数之间。

参数:

value:

Number-一个整数。

返回:

Number-一个随机整数。

案例进阶:

【进阶案例62】光彩夺目的鼠标尾巴

案例效果:

“光彩夺目的鼠标尾巴.swf”播放画面如图7-2-5所示。

动动你的鼠标,画面中呈现出光彩夺目的小球紧紧跟随着鼠标的效果。

图7-2-5光彩夺目的小球跟随鼠标的效果

设计步骤:

(1)打开flash文档,设置为550*300.背景为黑色。

(2)制作一个影片剪辑元件,如图7-2-6所示,元件的实例名称为sm,如图7-2-7所示。

这个影片剪辑是由三个放光的圆形线圈和变色实心圆,再外加围绕着这个实心圆周围旋转的小球组成。

图7-2-6小球影片剪辑所处的图层图7-2-7小球影片剪辑取名sm

(3)回到主场景,添加as层,分别从第1帧到第10帧添加代码,如图7-2-8所示。

(a)as层第1帧的动作代码(b)as层第2帧的动作代码

(c)as层第3帧的动作代码(d)as层第4帧的动作代码

(e)as层第5帧的动作代码(f)as层第6帧的动作代码

(g)as层第7帧的动作代码(h)as层第8帧的动作代码

(i)as层第9帧的动作代码(j)as层第10帧的动作代码

图7-2-8as层第1帧到第10帧的动作代码

(4)制作完毕后,保存为as鼠标跟随.fla,测试影片。

【进阶案例63】虚化的方块尾巴

案例效果:

“虚化的方块尾巴.swf”播放画面如图7-2-9所示。

移动鼠标,那些虚化的方块图形紧紧地跟随着鼠标。

图7-2-9方块的图形跟随鼠标运动的效果

设计步骤:

(1)先制作出方块图形,如图7-2-10所示,将方块图形转换成一个影片剪辑元件,实例名称为fang,如图7-2-11所示。

将方块图形制作出透明度变化的效果,在该效果的最后一帧加上代码:

stop();。

图7-2-10方块的图形图7-2-11影片剪辑元件属性设置图7-2-12时间轴图层

(2)再创建一个影片剪辑,注意元件内部不要放置任何内容。

时间轴

如图7-2-12所示。

(3)选中空影片剪辑,打开动作面板,添加ActionScript代码,如图7-2-13所示。

图7-2-13空影片剪辑的动作代码

(4)制作完毕后,保存为鼠标跟随2.fla,测试影片。

7.3【案例25】鼠标拖拽动画

案例效果:

“鼠标拖拽动画.swf”播放画面如图7-3-1所示。

用鼠标拖拽窗口中的文字,可以将文字放置在画面中的任意地方。

图7-3-1拖拽场景中文字的效果

设计步骤:

(1)主场景中导入五张图片,分别是“我”、“的”、“要”、“完”、“美”。

(2)将五张图片分别转换为五个影片剪辑元件。

(3)选中一个影片剪辑,例如“我”这个影片剪辑,打开动作面板,添加代码,如图7-3-2所示。

图7-3-2文字“我”这个影片剪辑的动作代码

(4)最后,给剩下的四个影片剪辑添加与文字“我”这个影片剪辑同样的动作代码。

(5)制作完毕后,保存为拖拽动画.fla,测试影片。

知识进阶:

1.startDrag函数

startDrag(target:

Object,[lock:

Boolean,left:

Number,top:

Number,right:

Number,bottom:

Number]):

Void

使target影片剪辑在影片播放过程中可拖动。

一次只能拖动一个影片剪辑。

执行startDrag()操作后,影片剪辑将保持可拖动状态,直到用stopDrag()显式停止拖动为止,或直到对其它影片剪辑调用了startDrag()动作为止。

参数:

target:

Object-要拖动的影片剪辑的目标路径。

lock:

Boolean[可选]-一个布尔值,指定可拖动影片剪辑是锁定到鼠标位置中央(true),还是锁定到用户首次单击该影片剪辑的位置上(false)。

left,top,right,bottom:

Number[可选]-相对于该影片剪辑的父级的坐标的值,用以指定该影片剪辑的约束矩形。

2.stopDrag函数

stopDrag():

Void

停止当前的拖动操作。

3.startDrag(MovieClip.startDrag方法)

publicstartDrag([lockCenter:

Boolean],[left:

Number],[top:

Number],[right:

Number],[bottom:

Number]):

Void

允许用户拖动指定的影片剪辑。

该影片剪辑将一直保持可拖动,直到通过对MovieClip.stopDrag()的调用明确停止为止,或者直到另一个影片剪辑变为可拖动为止。

在同一时间只有一个影片剪辑是可拖动的。

您可以通过创建子类来扩展MovieClip类的方法和事件处理函数。

参数:

lockCenter:

Boolean[可选]-一个布尔值,指定可拖动影片剪辑是锁定到鼠标位置中央(true),还是锁定到用户首次单击该影片剪辑的位置上(false)。

left:

Number[可选]-相对于该影片剪辑父级的坐标的值,该值指定该影片剪辑的约束矩形。

top:

Number[可选]-相对于该影片剪辑父级的坐标的值,该值指定该影片剪辑的约束矩形。

right:

Number[可选]-相对于该影片剪辑父级的坐标的值,该值指定该影片剪辑的约束矩形。

bottom:

Number[可选]-相对于该影片剪辑父级的坐标的值,该值指定该影片剪辑的约束矩形。

4.stopDrag(MovieClip.stopDrag方法)

publicstopDrag():

Void

结束MovieClip.startDrag()方法。

在添加stopDrag()方法之前,或在另一个影片剪辑变为可拖动之前,通过该方法变为可拖动的影片剪辑将一直保持可拖动状态。

在同一时间只有一个影片剪辑是可拖动的。

您可以通过创建子类来扩展MovieClip类的方法和事件处理函数。

案例进阶:

【进阶案例64】拖拽圆形

案例效果:

“拖拽圆形.swf”播放画面如图7-3-3所示。

用鼠标随意拖拽两个圆形,改变圆形的位置之后,连接两个圆形的连线也会随之发生变化。

图7-3-3用鼠标随意拖拽两个圆形的效果

设计步骤:

(1)在主场景中绘制两个大小不一的圆,分别将大圆和小圆转换为影片剪辑元件,并将注册点设为元件的中心,如图7-3-4所示。

图7-3-4在主场景中绘制大圆和小圆

(2)分别给影片剪辑实例名称命名为yuan_a、yuan_b,如图7-3-5所示。

(a)(b)

图7-3-5大圆影片剪辑取名为yuan_a,小圆影片剪辑取名为yuan_b

(3)在as图层,单击时间轴第1帧,打开动作面板,添加代码,如图7-3-6所示。

图7-3-6as层的第1帧的动作代码

(4)对大圆yuan_a、小圆影片剪辑yuan_b分别添加代码,如图7-3-7所示。

(a)大圆影片剪辑的动作代码(b)大圆影片剪辑的动作代码

图7-3-7大圆yuan_a的动作代码,小圆yuan_b的动作代码

(5)制作完毕后,保存为绘制线条.fla,测试影片。

【进阶案例65】点不准的No

案例效果:

“点不准的No.swf”播放画面如图7-3-8所示。

将鼠标放到“No”文字上时,“No”文字会跑掉,产生让人点不准的效果,当用鼠标单击“yes”文字,就会出现“哈哈,那就跟我学吧!

”字样。

图7-3-8“点不准的No”的效果

设计步骤:

(1)打开flash8,新建flash文档,新建四个图层,由上到下依次是as层,no文字层,yes文字层和背景层,如图7-3-9所示,在背景层插入一张背景图片和标题“HI告诉我你是不是白痴”,如图7-3-10所示。

图7-3-9

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2