Flash AS入门教程:文本与字符实例—打字游戏制作(2)_Flash教程
推荐:Flash教程:旋转花朵效果的制作效果演示: 本课中的内容涉及:函数定义, for...in 语句, .onEnterFrame 三个关键内容,函数的作用是实现代码的重用,配合for...in语句可批量赋予函数.望初学者仔细阅读.思路:1.使用for...in
6.好了,布置好了。现在来写代码。新建一层,命名为“action”,打开帧动作面板。
首选准备好文字,将出现的文字有字母和中文两种,我们建两个字符串来存放文字。字母比较简单只有26个,所以第一句:
var zm:String = “abcdefghijklmnopqrstuvwxyz”;
第二句放中文,我找了一篇散文,将它存在字符串中,在散后最后加上0~9,这样也可以让用练习一下数字键。
var zw:String = "这几天心里颇不宁静。…….”;
zw ="0123456789";
声明几变量,后面有用:
var zs=0; //下落文字的总数
var df=0; //击中文字的数量
var lg = 1;//语言,用于后面由用户选择练习字母还是练习中文。
var sd = 500;//速度,用于设置文字出现的速度。
var wbformat:TextFormat=new TextFormat();//创建一个文本格式,用于设置下落的文本
wbformat.bold=true;
wbformat.size=22;
在第二帧插入关键帧:这一帧将实现文字下落,击中和得分计数生等功能。
stop();
//首先创建一个输入文本用来接受用户输入文字:
this.createTextField("sr_txt",31,350,350,30,20);
sr_txt.type="input";
sr_txt.border=true;
sr_txt.text="开始";
//创建文本位置坐标要根据实际的位置来确定,使文本出现在大炮的下方。
下面用一个函数来实现出现字母的功能:
var i=0;
function cwb(wbl){//注意这里声明的函数带了一个参数wbl,这个参数用于文本是字母还是中文。
if(i<10){ //这一句就让屏幕上出现的文字只有10个。
var wbx = 150 random(370); //产生一个150到520的随机数,用于设置文字的x属性。
createTextField("wb_txt" i,i,200,20,30,30);
wb = eval("wb_txt" i);
var zmwz = random(wbl.length);//产生一个从0~文本字符串(第1帧创建那两个)的长度之间的随机数,用于从字符串中随机抽取字符。
wb.text = wbl.charAt(zmwz);//设置文本的内容为字符串中的随机字符
wb._x=wbx;
wb.setTextFormat(wbformat);//将第1帧创建的文本格式应用于该文本。
zs ;//文本出现后,文字总数加1
}else {
i=0;
}
i ;
}
//下面通过onEnterFrame事件,让出现的文本不断往下落:
onEnterFrame = function() {
for (k=0;k<10;k ){
wb= eval("wb_txt" k);
wb._y = 2;
}
};
//接下来就是启动游戏了,我们将启动按钮设在输入文本的onSetFocus事件上,也就是说,当我们一点击“开始”(输入文本获得焦点),游戏启动。
var szm;//这变量用来调用上面的出现字的函数。
sr_txt.onSetFocus = function(){
var jsid = setTimeout(js,60000);//首先设置一个时间限制,就是说60000毫秒(1分钟)调用函数js,这个函数将停止游戏并统计得分。
if(lg==1){//如果变量lg等于1
szm = setInterval(cwb,sd,zm); //那么每隔变量sd那么长的时间,调用一次出文字的函数cwb,并且使用字母(zm)字符串)
}else {//否则
szm = setInterval(cwb,sd,zw);//那么每隔变量sd那么长的时间,调用一次出文字的函数cwb,并且使用中文(zw)字符串).所以我们只虽改变变量lg的值,就可以选择出字母还是出中文了。
}
sr_txt.text="";//将输入文本框清空,准备输入。
}
function js(){//这是声明了一个用于结束游戏的函数。
clearInterval(szm);//清除setInterval的调用,文字不再出现。
mzl_txt.text = int((df/zs)*100) "%";//计算命中率,并显示。
}
//下面通过输入文本的onChanged事件,实现炮轰文字的效果。
sr_txt.onChanged = function(){//当输入文本内容发生变化时,即我们每输入一个文字时
for(var j=0;j<10;j ){
cxdwb =eval("wb_txt" j);
if(sr_txt.text == cxdwb.text){//如果输入的文字和出现的文字之一一样。
attachMovie("bz","bz_mc",21);//那么从库中加载爆炸元件,这里的深度我用了21,是为了避免与出现的文字文本冲突,当然11也就行了,因为文字文本只有10个。
bz_mc._x=cxdwb._x;
bz_mc._y=cxdwb._y 10;//两句设置爆炸元的位置和文字文本的位置一样,使其在文字处爆炸。
dx = cxdwb._x - dp_mc._x;
dy = cxdwb._y - dp_mc._y;
dz = Math.atan2(dy,dx)*180/Math.PI;
dp_mc._rotation = dz 90;//上面是通过三角函数使大炮的方向转为文字文本的方向。
cxdwb.removeTextField();//爆炸后将文字文本删除,即炸掉了。
df ;//击中后得分加1
df_txt.text=df;//显示得分
}
}
sr_txt.text="";//清空输入文本,准备下一次输入。
}
//游戏的功能就完成了,现在应提供一个重玩按钮,让用户可以重新开始游戏。
cw_btn.onRelease= function(){//当重玩按钮被点击时
if(lg==1){
szm = setInterval(cwb,sd,zm);
}else {
szm = setInterval(cwb,sd,zw);
}
sr_txt.text="";
setTimeout(js,60000);
df=0;
zs=0;
mzl_txt.text="";
}
//下面是设置按钮,进入设置页面。
sz_btn.onRelease =function(){
gotoAndStop(3);
}
在第3帧插入关键帧,将在这一帧设置文字语言,速度等。
进入设置页面后,首先停止游戏:
clearInterval(szm);
zs=0;
df=0;
//下面是几个设置按钮上的代码:
zm_btn.onRelease = function(){
lg=1;//让娈量lg等于1,这样文字将会是字母
yysz_txt.text="字母";
}
zw_btn.onRelease = function(){
lg=2;//让娈量lg不等于1,这样文字将会是中文
yysz_txt.text="中文";
}
ms_btn.onRelease= function(){
sd = 1000;//设置sd为1000毫秒,即每1000毫秒出一个文字,下同
sdsz_txt.text="慢速";
}
zs_btn.onRelease=function(){
sd = 500;
sdsz_txt.text="中速";
}
ks_btn.onRelease=function(){
sd =200;
sdsz_txt.text="快速";
}
qd_btn.onRelease=function(){//这是确定按钮上的代码,点击确定按钮后,退出设置窗口,返回游戏窗口,继续游戏。
gotoAndStop(2);
}
好,完工,祝你成功!
分享:Flash鼠绘娇艳的郁金香“Flash动画鼠绘入门班”第十课教材——画郁金香 在古欧洲,有一个美丽的姑娘,同时受到三位英俊的骑士爱慕追求。一位送了她一顶皇冠;一位送她宝剑;另一位送她黄金。少女非常发愁,不知道应
- 相关链接:
- 教程说明:
Flash教程-Flash AS入门教程:文本与字符实例—打字游戏制作(2)。