flash 编程找茬儿.docx

上传人:b****8 文档编号:10837903 上传时间:2023-02-23 格式:DOCX 页数:24 大小:1.16MB
下载 相关 举报
flash 编程找茬儿.docx_第1页
第1页 / 共24页
flash 编程找茬儿.docx_第2页
第2页 / 共24页
flash 编程找茬儿.docx_第3页
第3页 / 共24页
flash 编程找茬儿.docx_第4页
第4页 / 共24页
flash 编程找茬儿.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

flash 编程找茬儿.docx

《flash 编程找茬儿.docx》由会员分享,可在线阅读,更多相关《flash 编程找茬儿.docx(24页珍藏版)》请在冰豆网上搜索。

flash 编程找茬儿.docx

flash编程找茬儿

第1章

找茬儿

本章要点

本章将制作“找茬儿”游戏,游戏的内容是,在规定的时间内找到两幅图的不同点。

本章涉及的知识点主要有自定义变量并初始化,自定义函数,setInterval()与clearInterval()语句,隐形按钮的用法,游戏的初始化。

还涉及了用attachSound()语句加载声音、用程序控制影片剪辑帧的跳转、for循环等知识。

本章内容主要包括

Ø自定义变量并初始化

Ø自定义函数

ØsetInterval()与clearInterval()语句

ØattachSound()语句

Ø用程序控制影片剪辑帧的跳转

Ø倒计时的实现

实例说明

本例将制作一个简单的找茬儿游戏,从三幅图中任选一幅便可开始游戏,如图1.1所示。

在图1.2中,单击右图中与左图的不同之处(每幅图有五处不同),在规定的时间内全部找出后即完成游戏。

单击每幅图右下角的返回按钮可以返回开始界面,选择其他图,如果没有在规定的时间内找到5处不同或点错4次,游戏结束。

图1.1“找茬儿”游戏运行效果1

图1.2“找茬儿”游戏运行效果2

学习目标

通过本例的学习,应该掌握有关变量初始化、自定义函数、for循环的知识,学会用自定义函数和setInterval()、clearInterval()语句制作倒计时的方法,了解用隐形按钮制作鼠标的感应区域的方法、游戏初始化的方法、利用attachSound()语句加载库中的声音的方法、用程序控制影片剪辑帧的跳转的方法等,为以后制作复杂的游戏奠定基础。

操作步骤

1.1素材准备

1.图形素材

这个游戏共用了两张图,一张是开始界面的背景图,另一张是第一幅图的背景。

可以通过网络或素材光盘取得图片,再通过Photoshop或Fireworks对图片进行修改(见配套光盘中的“素材\第1章找茬游戏\图片”)。

2.声音素材

这个游戏用到的声音有找到不同时的声音“对”,找错时的声音“错”,时间剩10秒后倒计时的声音“倒计时”,还有成功和失败后发出的声音“成功”和“失败”(见配套光盘中的“素材\第1章找茬游戏\声音”)。

3.元件素材

(1)新建影片剪辑元件“左图1”,将图层名改为“图”,在该图层绘制一幅图,为了整齐、美观,在“遮罩”图层绘制一个矩形,并把“遮罩”图层设置为遮罩层,如图1.3所示。

图1.3“左图1”元件

用同样的方法,制作元件“左图2”、“左图3”(见配套光盘中的“素材\第1章找茬游戏\影片剪辑.fla”),如图1.4和图1.5所示。

(2)打开库面板,在元件“左图1”上右击,在弹出的快捷菜单中选择“直接复制”命令,在弹出的“直接复制元件”对话框中将元件名改为“右图1”,进入元件“右图1”的编辑窗口,将图稍加改动。

用同样的方法,在元件“左图2”和“左图3”的基础上再复制出两个影片剪辑元件并修改,分别命名为“右图2”、“右图3”,每幅图有5处不同,可以自行设计(见配套光盘中的“素材\第1章找茬游戏\影片剪辑.fla”),如图1.6~图1.8所示。

图1.4“左图2”元件

图1.5“左图3”元件

图1.6“右图1”元件

图1.7“右图2”元件

图1.8“右图3”元件

(3)新建一个影片剪辑元件,命名为“图1按钮”,将图层名改为“图”,将元件“左图1”放在该层,将大小设置为原来的50%。

新建一层给图加一个阴影(见配套光盘中的“素材\第1章找茬游戏\影片剪辑.fla”),如图1.9所示。

图1.9“图1按钮”元件

(4)用同样的方法制作“图3按钮”两个影片剪辑元件(见配套光盘中的“素材\第1章找茬游戏\影片剪辑.fla”)。

(5)新建一个影片剪辑元件并命名为“进度”,将图层名改为“灰点儿”,在第1帧画5个灰色的小圆点儿,新建图层并命名为“亮点”,在该图层的第2帧绘制一个蓝色的小圆点儿,覆盖第1个灰点儿,后面的每一帧都比前一帧多一个蓝点儿,逐个将灰点儿覆盖,第6帧蓝色的小点儿全部将灰色点儿覆盖,在actions层的第 1帧添加“stop();”语句(见配套光盘中的“素材\第1章找茬游戏\影片剪辑.fla”),如图1.10所示。

图1.10“进度”元件

这个元件的作用是标识玩家已经找到了几处不同。

(6)新建一个影片剪辑元件,命名为“错误”,将图层名改为“笑脸”,在该图层绘制4个笑脸。

新建一个图层并命名为“哭脸”,在该图层绘制一个哭脸,后面的每一帧都比前一帧多一个哭脸。

第5帧哭脸全部将笑脸覆盖,在actions层的第 1帧添加“stop();”语句,在最后一帧添加代码:

_root.over.play();

//播放到最后一帧时游戏结束,播放失败的反馈

如图1.11所示(见配套光盘中的“素材\第1章找茬游戏\影片剪辑.fla”),这个元件的作用是标识玩家找错了几次。

图1.11“错误”元件

(7)新建一个影片剪辑元件,命名为“标示”,制作一段画圆圈的动画。

在最后一帧添加“stop();”(见配套光盘中的“素材\第1章找茬游戏\影片剪辑.fla”),元件及时间轴如图1.12所示。

图1.12“标示”元件

(8)新建一个按钮元件,命名为“隐形按钮”,在“点击”帧中绘制一个矩形(见配套光盘中的“素材\第1章找茬游戏\按钮.fla”),如图1.13所示。

图1.13“隐形按钮”元件

提示

按钮的时间轴只有4帧,第1帧是鼠标触发前的状态,第2帧是鼠标经过时的状态,第3帧是鼠标按下后的状态,最后一帧中的内容不会显示,只是一个感应区域。

如果前三帧是空的,只有第4帧有内容,那么这个按钮在舞台上是一个浅蓝色的区域,预览时是看不到的。

在游戏中多被用于不可见的感应区域。

(9)再新建一个影片剪辑元件,命名为“隐形按钮MC”,在第1帧放入按钮“隐形按钮”,将实例命名为“bt”,在第2帧放入元件“标示”,在第1帧添加“stop();”(见配套光盘中的“素材\第1章找茬游戏\影片剪辑.fla”),如图1.14所示。

图1.14“隐形按钮MC”元件

(10)制作成功的反馈。

新建一个影片剪辑元件并命名为“成功”,在第2帧到第18帧之间制作一段文字“Good”由小到大的动画,在“声音”图层的第2帧插入声音“成功”,在第1帧和最后一帧添加“stop();”(见配套光盘中的“素材\第1章找茬游戏\影片剪辑.fla”),如图1.15所示。

(11)制作一个重玩按钮,游戏结束后单击该按钮可以重新开始(见配套光盘中的“素材\第1章找茬游戏\按钮.fla”),如图1.16所示。

图1.15“成功”元件

图1.16重玩按钮

(12)制作失败的反馈。

先新建一个影片剪辑元件并命名为“失败”,将图层名改为“over”,在该层的第1帧到第18帧之间制作一段内容为文字“GameOver”由小到大渐变的动画。

新建图层“重玩”,在该图层制作重玩按钮从左边到中间的动画,新建图层“声音”,插入声音“结束”,在第1帧和最后一帧添加“stop();”(见配套光盘中的“素材\第1章找茬游戏\影片剪辑.fla”),如图1.17所示。

(13)最后制作一个返回按钮,游戏结束后单击该按钮可以选择其他图(见配套光盘中的“素材\第1章找茬游戏\按钮.fla”),如图1.18所示。

图1.17“失败”元件

图1.18返回按钮

至此,游戏要用到的元件就完成了。

1.2鼠标划过图片效果

当玩家将鼠标移到一个图上时,这个图逐渐变大,而鼠标移开图后又恢复原来的状态,有利于玩家看清图而做出相应的选择。

(1)新建Flash文档,背景颜色设置为“#00CCFF”,帧频设置为30帧/秒,将文档保存为“鼠标划过图片效果”(见配套光盘中的“素材\第1章找茬游戏\鼠标划过图片效果.fla”)。

把三个影片剪辑元件“图1按钮”、“图2按钮”和“图3按钮”并排放在舞台居中的位置,在“图1按钮”上添加如下代码(如图1.19所示):

图1.19在影片剪辑元件“图1按钮”上添加代码

onClipEvent(enterFrame){

//enterFrame事件,反复执行下面的代码

this.onRollOver=function(){

//当onRollOver事件发生时,即玩家将鼠标移到该影片剪辑上

this.onEnterFrame=function(){

//反复执行下面的代码

if(this._xscale<=110){

//如果这个影片剪辑的水平缩放比例小于110

this._xscale=this._yscale+=2;

//则水平、垂直缩放比例递增

}

};

};

this.onRollOut=function(){

//相应地,当onRollOut事件发生时,即玩家将鼠标移开该影片剪辑

this.onEnterFrame=function(){

if(this._xscale>=100){

//如果这个影片剪辑的水平缩放比例大于100

this._xscale=this._yscale-=2;

//则水平、垂直缩放比例递减

}

};

};

}

(2)将第

(1)步中在“图1按钮”上添加的代码分别复制到其他两个影片剪辑的动作面板上。

预览一下,我们需要的效果已经实现了(见配套光盘中的“素材\第1章找茬游戏\鼠标划过图片效果.fla”),如图1.20所示。

图1.20鼠标划过图片效果

1.3倒计时的实现

(1)新建Flash文档,背景颜色设置为“#66CCFF”,大小设置为280×200像素,将文档保存为“倒计时”(见配套光盘中的“素材\第1章找茬游戏\倒计时.fla”)。

将图层名改为“倒计时”,插入一个静态文本“倒计时”,新建图层“txt”,在该图层插入一个动态文本,将变量名命名为“time”。

(2)导入声音文件“倒计时”,在库面板中右击,从弹出的快捷菜单中选择“链接”命令,在弹出的“链接属性”对话框中单击复选框“为ActionScript导出”,在链接标识符一栏中输入“jishi”。

(3)在actions层中添加如下代码(如图1.21所示):

图1.21在actions层上添加代码

time=20;

//给变量time赋初始值为20

shijiansound=newSound();

//定义Sound对象shijiansound

shijiansound.attachSound("tishi");

//从库中附加声音文件tishi

functiondaojishi(){

//自定义函数

if(time>0){

time--;

//变量time的值递减

//当time递减到0时便停止

if(time<=10){

//如果变量time小于或等于10时

shijiansound.start(0,1);

//声音播放一次,如果需要循环播放,可将后面的数字1尽量变大

}

}

}

jishi=setInterval(daojishi,1000);

//使用setInterval()语句一秒钟调用一次daojishi函数

这个文件实现的效果是:

时间从20秒开始递减,当减到10秒之内时,发出提示的声音,直到递减为0。

提示

setInterval()的作用是在播放SWF文件时,每隔一段时间就调用一次函数或对象。

使用它可以在一段时间内重复执行任何函数。

setInterval()有两个参数,第一个是要调用的函数或对象,第二个是连续两次调用函数间隔的时间(以毫秒为单位)。

如果不需要再调用函数,可用clearInterval()停止setInterval()调用。

上面的代码就是利用setInterval()语句1000毫秒(1秒)调用一次“daojishi()”函数实现倒计时。

attachSound是将在id参数中指定的声音附加到指定的Sound对象。

该声音必须位于当前SWF文件的库中,并且已经在“链接属性”对话框中指定为导出。

必须调用Sound.start()才能开始播放此声音。

Sound.start()有两个参数,通过第一个参数可以设置从特定点开始播放声音,例如,如果有一个30秒的声音,而我们希望该声音从中间开始播放,可将此参数指定为15。

并非声音延迟15秒,而是从15秒标记处开始播放。

通过第二个参数可以指定声音连续播放的次数。

1.4游戏实现

(1)新建Flash文档,帧频设置为24帧/秒,将文档保存为“找茬游戏”。

将场景名称改为“start”,新建一个场景,命名为“game”。

切换到场景“start”。

把文件“鼠标划过图片效果.fla”中的三个影片剪辑元件“图1按钮”、“图2按钮”、“图3按钮”并排放在舞台下方,元件场景“start”的时间轴和舞台如图1.22所示。

图1.22“start”场景

(2)在影片剪辑“图1按钮”中添加如下代码(如图1.23所示)。

对其中的一些语句注释如下:

onClipEvent(enterFrame){

//enterFrame事件,反复执行下面的代码

this.onRollOver=function(){

//当onRollOver事件发生时,即玩家将鼠标移到该影片剪辑上

this.onEnterFrame=function(){

//反复执行下面的代码

if(this._xscale<=110){

//如果这个影片剪辑的水平缩放比例小于110

this._xscale=this._yscale+=2;

//则水平、垂直缩放比例递增

}

};

};

this.onRollOut=function(){

//相应地,当onRollOut事件发生时,即玩家将鼠标移开该影片剪辑

this.onEnterFrame=function(){

if(this._xscale>=100){

//如果这个影片剪辑的水平缩放比例大于100

this._xscale=this._yscale-=2;

//则水平、垂直缩放比例递减

}

};

};

this.onRelease=function(){

//onRollOut事件发生时,即玩家单击该影片剪辑时

_root.choose=1;

//变量choose等于1

};

}

图1.23在“图1按钮”上添加代码

图1.23中的第16行到第18行是刚加入的代码,它的作用是当单击这个影片剪辑时,将变量“choose”赋值为1。

将图1.23中的代码复制到其他两个影片剪辑上,改变一下变量“choose”的值,在“图2按钮”中将“choose”赋值为2,在“图3按钮”中将“choose”赋值为3。

(3)在actions图层的第1帧中添加如下代码(如图1.24所示):

stop();

choose=0;

//初始化变量

onEnterFrame=function(){

//反复执行下面的代码

if(choose==1){

gotoAndStop("game","yi");

}

//当choose为1时,跳转到场景game的yi帧上并停止

if(choose==2){

gotoAndStop("game","er");

}

//当choose为2时,跳转到场景game的er帧上并停止

if(choose==3){

gotoAndStop("game","san");

}

//当choose为3时,跳转到场景game的san帧上并停止

};

图1.24actions层第1帧中的代码

(4)切换到game场景,在“背景”图层放两个色块,上面是控制区,下面是操作区。

在“左图”图层放元件“左图1”,在“右图”图层放元件“右图1”,将实例命名为“youtu1”。

在“标识”层放元件“进度”和“错误”,将实例分别命名为“diffpoint”和“wrong”,在win和gameover图层分别放入游戏成功和失败的反馈元件“成功”和“失败”,实例分别命名为“over”和“good”。

在“返回”层放置按钮元件“返回”。

“边框”层放置一个黑色的框,刚好罩住整个舞台,使本来参差不齐的画面显得很整洁。

actions层暂时不添加内容。

在第1帧插入帧标签“yi”,当单击start场景中的第一幅图时便跳转到这一帧,此时的时间轴和舞台如图1.25和图1.26所示。

(5)新建图层“时间”,在舞台的右上角插入一个静态文本框“时间”和动态文本框,将动态文本框变量命名为“time”。

(6)新建图层“不同处”,将元件“隐形按钮MC”拖到舞台上,放到右边图和左边图中不同的5个位置,将5个实例分别命名为“diff1”、“diff2”、“diff3”、“diff4”和“diff5”,如图1.27所示。

图1.25game场景的时间轴

图1.26game场景的舞台

图1.27把元件“隐形按钮MC”放到两幅图的不同处

(7)双击进入元件“隐形按钮MC”的编辑窗口,在第1帧中的“隐形按钮”上添加代码,如图1.28所示。

当玩家点到“隐形按钮MC”,也就是玩家点到两幅图的不同之处时,标识错误的影片剪辑开始播放,把不同处圈起来,同时舞台上标识找到几处不同点的标识处增加一个蓝色的点,播放一次正确反馈的声音。

图1.28在按钮“隐形按钮”上添加代码

(8)在实例youtu1上添加代码,如图1.29所示。

图1.29实例youtu1上的代码

当玩家点到实例youtu1而没有点到diff1、diff2、diff3、diff4、diff5实例中的任何一个,即找错时,标识点错几次的实例就会多显示一个哭脸。

(9)在影片剪辑元件wrong的最后一帧添加以下代码:

_root.over.play();

//播放到最后一帧时游戏结束

(10)在actions图层中添加以下代码:

stop();

rightsound=newSound();

rightsound.attachSound("dui");

//附加正确反馈声音

wrongsound=newSound();

wrongsound.attachSound("cuo");

//附加错误反馈声音

shijiansound=newSound();

shijiansound.attachSound("tishi");

//附加提示声音

functiondaojishi(){

time--;

if(time<=10){

shijiansound.start();

}

//当时间剩下10秒钟时播放提示的声音

}

//自定义倒计时函数

functionjieshu(){

for(i=1;i<=5;i++){

_root["diff"+i].bt.enabled=0;

}

}

//定义游戏结束后所有按钮都被禁用的函数

functionchushihua(){

time=40;

//初始化时间

winlin=0;

//初始化winlin

loselin=0;

//初始化loselin

jishi=setInterval(daojishi,1000);

//每秒钟调用一次daojishi函数

for(i=1;i<=5;i++){

_root["diff"+j].gotoAndStop

(1);

//diff1-diff5全部跳回第一帧

_root["diff"+i].bt.enabled=1;

//diff1-diff5恢复为启用状态

}

_root.youtu1.enabled=1;

//实例youtu1恢复为启用状态

_root.wrong.gotoAndStop

(1);

//显示点错几次的影片剪辑跳回第1帧

_root.diffpoint.gotoAndStop

(1);

//“进度”元件的实例“diffpoint”跳回第1帧

}

//自定义初始化函数,将所有的变量和实例都恢复到游戏前的状态

chushihua();

//调用chushihua函数

onEnterFrame=function(){

if((time==0||_root.wrong._currentframe==5)&&loselin==0){

//如果时间为0或wrong到了最后一帧,并且loselin为0时

_root.over.play();

//播放游戏结束的反馈

clearInterval(jishi);

//停止倒计时

_root.youtu1.enabled=0;

//youtu1变为被禁用状态

loselin=1;

//上面的条件不再成立,即上面三行只执行一次,不会重复被执行

jieshu();

//调用jieshu函数,所有按钮被禁用

}

if(_root.diffpoint._currentframe==6&&winlin==0){

//如果diffpoint到了最后一帧,并且winlin为0时

_root.good.play();

//播放成功的反馈

clearInterval(jishi);

//停止setInterval()调用daojishi函数

_root.youtu1.enabled=0;

//youtu1变为被禁用状态

winlin=1;

//上面的条件不再成立,即上面三行只执行一次,不会重复被执行

jieshu();

//调用jieshu函数,所有按钮被禁用

}

};

(11)在“返回”按钮上添加代码,如图1.30所示。

图1.30“返回”按钮上的代码

(12)最后,在over元件中的“重玩”按钮上添加代码,如图1.31所示。

图1.31“重玩”按钮上的代码

至此,本游戏的第一幅图就完成了,其他两幅图的制作方法与第一幅图相同。

小结拓展

本章我们学习了怎样实现鼠标划过图片的效果,怎样实现倒计时的效果,还学习了使用setInterval()语句每隔一段时间就调用一次函数,使用attachSound()语句从库中调出声音等知识。

在两幅图的不同处,我们放置了设计好的影片剪辑,当玩家点击到这些影片剪辑时,游戏给出正确反馈。

点击其他位置时,给出错误反馈。

但要注意的是游戏成功和失败后,再重新开始时,变量的初始化,本例的初始化写在了chushihua函数中,当游戏开始时调用这个函数即可。

写程序时需要多次重复使用的语句最好编写成一个函数,也就是最好将程序模块化,这样不但避免了重复写相同的内容,而且提高了程序的可读

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

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1