APP下载

Flash AS3打字游戏过关版

2015-09-11易威环

电脑知识与技术 2015年17期
关键词:游戏

易威环

摘要:该文采用Flash AS3为开发环境,首先对整个项目策略进行简述,并配有图例进行说明,再在Flash环境中,设计相应元件,分各模块进行详细设计,并配有详细的说明。

关键词:Flash;AS3;游戏;打字

中图分类号:TP311文献识别码:A 文章编号:1009-3044(2015)17-0082-03

The Gameof Typewriting to Pass a Test

YI Wei-huan

(Software Institute of Hunan Vocational College of Science and Technology,Changsha 410118,China)

Abstract:In this paper, we use Flash AS3 to setup the development environment. Firstly, the whole project strategy is briefly introduced. and with a legend to explain, Then In the Flash environment,the author designers the corresponding element. Each module detailed design, And is equipped with a detailed description.

Key words: Flash;AS3;game;typewriting

AS3即ActionScript3.0的简称。它是Flash的脚本语言,是一种面向对象编程语言。在Flash中运用AS3.0编写脚本,可以实现各种复杂的交互功能和炫酷的视觉效果,如:纯Flash制作的品牌互动网站、网站互动广告、产品互动展示、Flash小游戏、网络游戏等等。可以说AS3是成为一名Flash开发高手必备的武器。

1 设计思想

屏幕上不断随机出现英文字母,超出屏幕就消失,系统扣除玩定积分,玩家不断按键,击中相应字母则系统加上积分,如果在规定的时间内能达到相应的分值,则进入下一关,否则游戏结束。如果在规定的时间内,积分如果为0,则游戏也结束。

2 项目界面

2.1 运行界面

3 准备

1 )打开Flash,新建ActionScript3.0文档。

2 )在屏幕上添加文本框lbl倒计时,添加文本框lbl1显示积分,添加文本框msg显示相关信息,添加一按钮btn,并设置为不可见。

3 )在时间轴第一帧上输入下面代码。

4 程序

4.1 字符随机出现在屏幕上

var arr:Array=new Array();

var time:uint=0;//字母出现的时间间隔

var angle:Number=0;//旋转的角度

var score:int=1;

var t:int=13;

var flag:int=1;//定义一标志

[SWF(width=800,height=465,backgroundColor=0xffffff,frameRate=24)]//定义环境

stage.addEventListener(Event.ENTER_FRAME,showChar);//通过帧频事件显示字符

function showChar(e:Event):void{//显示字符

time++;//延时

angle+=0.1;

if(time>=t){//字符出现的时间间隔

var tf:TextField=addChild(new TextField()) as TextField;//建立文本框

time=0;//重新调用showChar时,保证time初值为0

//在文本框中随机生成字符,并设置其格式

//A

tf.htmlText=''+

String.fromCharCode(int(Math.random()*26+65).toString())+'

';

tf.x=Math.random()*-760+780;//将字符随机定位

tf.y=-10;

tf.name=(Math.random()*-10+5).toString();//产生-5~5之间的数字成为tf的名字

arr.unshift(tf);//将元素添加到数组的开头

}

for(var i:Number=arr.length-1;i>=0;i--){//在屏幕上移动字符,越界后消失

arr[i].y+=3;//字符往下移

arr[i].x+=Math.sin(angle)*int(arr[i].name);//在X轴上左右摆动

if(arr[i].y>=stage.stageHeight){

removeChild(arr[i]);//清除舞台上的该字符

arr.splice(i,1);//从数组中删除

score--;

break;

}

}

lbl1.text="你的积分是:"+score;

if(score==0){

stage.removeEventListener(Event.ENTER_FRAME,showChar);

timer.stop();

msg.text="挑战失败,请退出系统!";

btn.visible=true;

btn.label="退出";

btn.addEventListener(MouseEvent.CLICK,quit);

function quit(e:Event):void{

fscommand("quit");//退出系统

}

}

}

4.2 键盘敲击字母

stage.addEventListener(KeyboardEvent.KEY_DOWN,hitChar);//监听键盘事件

function hitChar(e:KeyboardEvent):void{

for(var i:Number=arr.length-1;i>=0;i--){//遍历数组

//如果第i个文本框中的字符等于按键的字符

if(arr[i].text==String.fromCharCode(e.keyCode)){

removeChild(arr[i]);

arr.splice(i,1);

score++;

break;

}

}

}

4.3 倒计时

var i:int=30;

var timer:Timer=new Timer(1000,30);//每隔1000毫秒调用timerHandle()一次,共调用30次

timer.addEventListener(TimerEvent.TIMER,timerHandle);

timer.start();

function timerHandle(e:TimerEvent):void{

i--;//i为时间,初始为30

lbl.text="倒计时:"+i.toString();

if(i==0){

timer.stop();

stage.removeEventListener(Event.ENTER_FRAME,showChar);

msg.text="你挑战失败,请退出系统!";

btn.visible=true;

btn.label="退出";

btn.addEventListener(MouseEvent.CLICK,quit);

function quit(e:Event):void{

fscommand("quit");//退出系统

}

}

4.4 过第一关

if(score>15&&i>0&&flag==1){//在给定时间积分大于15,过第一关

stopListener();

}

4.5 过第二关

if(score>=20&&i>0&&flag==2){//过第二关,flag=2表明是经过了第一关

stopListener();

}

}

4.6 过第三关

if(score>=25&&i>0&&flag==3){

msg.visible=true;

msg.text="挑战成功,恭喜你获得:\n由娃哈哈提供的矿泉水一瓶!";

btn.visible=true;

btn.label="退出";

timer.stop();

stage.removeEventListener(Event.ENTER_FRAME,showChar);

btn.addEventListener(MouseEvent.CLICK,nextOK3);

function nextOK3(e:MouseEvent):void{

fscommand("quit");

}

}

4.7 过关和终止函数

function passGate():void{

i=30;//计时的初始值

score=1;//计分

btn.visible=false;//隐藏按钮

msg.visible=false;//隐藏文本框

timer.start();//重新启动定时器

timer.addEventListener(Event.ENTER_FRAME,timerHandle);//重新计时

stage.addEventListener(Event.ENTER_FRAME,showChar);

}

function stopListener():void{//失败终止事件

msg.visible=true;

msg.text="恭喜你,成功过关!";

btn.visible=true;

btn.label="第”+flag.toString()+”关";

flag++;

timer.stop();

stage.removeEventListener(Event.ENTER_FRAME,showChar);

btn.addEventListener(MouseEvent.CLICK,nextOK);

function nextOK(e:MouseEvent):void{//进入第二关

if(flag==2){

t=8;//字符出现的时间间隔减少

passGate();

}else if(flag==3){

t=3;//时间间隔越小,字母出现越快

passGate();

}

}

}

5 结束语

随着网络的的发展,原来的网页端体验已经不能满足用户需求,富客户端技术显得日益重要,而flashActionScript3.0(简称AS3)为富客户端技术提供了重要的解决方案。

参考文献:

[1]夏敏捷.Flash ActionScript 3.0动画基础与游戏设计[M]. 北京: 清华大学出版社, 2015.

[2] 安永梅, 成维丽.Flash CS5动画制作与应用[M]. 2版. 北京: 人民邮电出版社, 2013.

猜你喜欢

游戏
爆笑游戏