实验三 打字游戏的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上机实验须知
实验名称:
打字游戏的实现
实验目的:
在掌握Flash中坐标系统的应用以及帧延迟循环的应用的基础上,结合人机交互的技术,实现一个美观实用的完整的Flash打字游戏。
实验环境:
1)高档微机
2)Windows操作系统中文版
3)Flash CS3 Professional中文版
实验原理:
通过侦听Flash的键盘事件,获取事件对象,然后通过事件对象的keyCode值可以确认发生事件的是哪个按键。例如按下J键,那么Flash就会自动产生一个键盘事件对象,其keyCode值为74。每个按键都有一个唯一的键控代码,如附录所示。其它知识点基本上涵盖在坐标系统与延迟帧循环中,这里不再赘述。
实验内容:
本游戏开始之后,在屏幕下方不断出现上升的气球,每个气球上面都有一个字母,敲击键盘上对应的字母后,气球就会破裂。游戏时间为1~5分钟,游戏结束后会显示打字的速度和准确率。
游戏分析:
打字游戏的原理非常简单,只要侦听键盘事件,并判断键盘所代表的字母是否在屏幕上,并做相应的处理即可。
实验步骤:
1)制作气球角色
气球是一个类似弹球的角色,它内部时间轴的延迟循环实现了自动上漂以及爆炸后文字下落的运动效果,并提供一些对外函数,从而实现设置气球颜色、设置字母、爆炸等等视觉效果。
气球角色对外的属性和方法如下:
属性和方法说明
inStage: Boolean 气球是否在舞台上(上漂)的标识符
idle: Boolean 气球是否空闲的标识符
setColor(col:uint) 设置气球的颜色
init(index:int) 初始化气球的各个状态
bomb() 气球爆炸
blast(speedLevel:int) 发射气球
已经完成了气球角色的时间轴如下图所示:
气球角色的时间轴
它有三个可视对象:气球皮肤、气球外框和显示字母的动态文本框。其中气球皮肤用来设置气
球的色彩以及爆炸的动画和声音效果,这里不再赘述。设置三个对象的实例名称分别为edge、skin、txt_char。
action图层的第1帧代码为:
var inStage:Boolean,idle:Boolean;
var speed:Number;//气球的速度
var index:int;//气球的索引
var g:Number;//重力加速度
stop();
function setColor(col) {
var ct:ColorTransform = new ColorTransform();
ct.color=col;
skin.transform.colorTransform =ct;
}
function init(i:int=-1) {
index=i
if (index!=-1) {
txt_char.text=String.fromCharCode(index+65);
}
//设置气球的各个初始状态
setColor(uint(Math.random()*0x88FFFF));
edge.visible=true;
skin.gotoAndStop(1);
gotoAndStop(1);
this.y=420;
inStage=false;
idle=true;
g=0;
speed=-2;
}
function bomb() {
edge.visible=false;
skin.gotoAndPlay(2);
inStage=false;
g=0.5;
speed=-speed;
}
function blast(speedLevel:int=2) {
this.x=Math.random()*510+20;
speed=speed*speedLevel;
inStage=true;
idle=false;
play();
}
第2帧代码为:
this.y += speed;
if (this.y<=-20) {//气球已经飘出舞台外
MovieClip(parent).loseBalloon();
this.y = 420;
init();
}
if (this.y>=440) {//打落的字符已经掉出舞台外。
init();
}
第3帧的代码为:
gotoAndPlay(2);
在库中选中气球剪辑,点击右键选择“链接”,钩选“为ActionScript导出”,设置其链接名字为Balloon。
2)游戏主场景设计
已完成的游戏主场景时间轴入下图所示:
打字游戏的主时间轴
其中背景为一张静态的图片。按钮图层放置着游戏各个阶段所需的可视对象。
第1帧的界面如下图所示:
打气球游戏的第1帧
这一帧的作用是显示游戏名字、说明并等待开始。设置“开始”按钮的实例名称为:bt_start。
第2帧的界面如下图所示:
打气球游戏的第2帧
这一帧的作用是提供游戏中的几个参数设置。三个组合框组件分别用来设置游戏速度等级、游戏时间和同时在舞台上的气球的最大数量。在参数栏中设置它们的数据项(DataProvider)。如“游戏时间”的数据项设置为:
“游戏时间”的数据项设置
设置三个组合框的实例名称分别为:cmb_speed、cmb_time、cmb_maxCount,设置“OK”按钮的实例名称为bt_OK。
第3帧为游戏中界面,在背景的基础上增加了游戏成绩的动态显示。它们为多个动态文本框,如下图所示:
游戏中成绩的动态显示
设置三个动态文本框的实例名称分别为:txt_count、txt_percent、txt_timeLeft。
第4帧为游戏结束后的成绩显示,界面如下图所示: