Flash 游戏 毕业论文(4)

2019-04-02 11:42

3。1。1 游戏主界面

游戏布局元件包含了特效图层和功能图层。特效图层为带有“boom”的图层,在游戏时能让画面闪烁,增加动感。功能图层部分中的玩家图层包含玩家元件(Player)、游戏结束图层包含游戏结束元件(GameOver)、关卡图层包含关卡元件(GuanQia)、生命图层包含玩家生命值元件(Health)、游戏边框图层包含游戏区域和游戏背景。其中红色边框为舞台区域,游戏运行时舞台区域以外的元件是不可见的。

3。1。2 全局脚本

全局脚本即游戏布局(State)元件的的脚本(State。as),它具有以下作用:

1.存储游戏数据。

游戏数据包含了下列变量:

public var bulletX:Number;

2. 实现游戏特效。

游戏,在flash中是一个可以被玩家控制的影片剪辑,所以游戏布局元件也有他自己的时间轴,有了时间轴就有了帧,每一帧都是一个静态的图片,根据帧频快速播放后就形成了动画。游戏特效建立在下面这个函数上 onEnterFrame_(),它的作用是影片每一次播放一个帧,此函数都会运行一次。现在主流的Flash游戏帧频都是60fps,所以onEnterFrame_()函数每秒都要运行60次。

12

//玩家子弹的横坐标 //玩家子弹的纵坐标

public var bulletY:Number; public var enemyX:Number; public var enemyY:Number; public var bossX:Number; public var bossY:Number; public var i:Number; public var j:Number;

//敌人的横坐标 //敌人的纵坐标 //领主的横坐标 //领主的纵坐标 //敌人出现延时 //领主出现延时

//玩家子弹参数 //分数

public var bulletCS:Bullet; public var score_:int=0; public var d:Number;

public var buNum:Number=0; //玩家子弹数(控制在1之内) private var init_:Boolean=false; //是否可以初始化

//屏幕抖动参数

//玩家子弹攻击力(只适用于领主) //领主生命值

public var des:Number; public var bossH:Number;

在此款坦克大战游戏中,由函数控制的特效有两个:第一是屏幕抖动

(DouDong()),他模仿了击毁敌人使的空气震动效果。在抖动函数中有两条语句,它们的作用是让整个State元件在横坐标上随机移动-2~2像素,纵坐标随机移动-2~2像素,实现屏幕抖动功能。onEnterFrame_()函数控制了屏幕抖动参数d,如果d<6,则屏幕开始抖动,如果d>6,则屏幕静止不动,每次抖动d都会自动增加1,直到d大于6为止,避免屏幕一直抖动不停。如果屏幕静止了,则让d等于20,避免d无限增大下去。第二个特效为全屏渐变,在游戏中全屏渐变的元件都添加在前面带有boom的图层中,不同的图层有不同的颜色和效果,比如游戏开始时,整个屏幕从一团白色中渐变出来,模拟了士兵上战场的特效。

3.控制游戏进程。

在上面的参数中,我们可以看到有两个参数,i和j,他们就是控制游戏进程的参数。一个新关卡开始时,i=0,每一帧i自动增加1,当i大于120时,则会生成一个普通的敌军坦克,并且i再次等于0,实现了敌军不断增援的效果。同理,j开始也等于0,当j大于3000时,将会出现一个领主坦克,领主坦克出现时,i和j等于一个极大的负值,这样就不会继续出现敌军普通坦克和领主坦克。

参数des,这是玩家坦克对领主的伤害值,它的初始值为0。2,我们在这里规定它不小于0。05。

参数bossH,这是领主的生命值,是由领主类的一个计算方法得出的,它显示了玩家要击毁领主需要多少颗子弹。

在游戏结束时,如果玩家要重新开始游戏,则需要对游戏进行初始化,初始化的参数是init_。

4.评判玩家技术。

在游戏中,每击毁一辆敌军坦克都会增加分数。在游戏结束时,GameOver元件会从舞台外部移动到内部,并且系统会根据分数判定你的军衔等级,军衔等级包括新兵、上等兵、中尉、少将等等。

13

3。2 玩家类

玩家类是影片剪辑类,但它实际是一个简单的图形,并且有一个图层,如图3。2。1所示。

图3。2。1 玩家元件设计界面

3。2。1 玩家坦克的移动

玩家坦克有自己的横坐标x,纵坐标y。在玩家类中需要添加键盘监听器,在玩家类中,同样拥有自己的onEnterFrame_()函数。类中负责玩家移动的参数是vx和vy,它们是横坐标和纵坐标上的速度,实现玩家移动效果只需要将两句代码加入到onEnterFrame_()函数中,即x+=vx; y+=vy; 为了不让玩家超出移动范围,需要将玩家的横纵坐标限制在一个矩形范围内,并且根据键盘的按键来判断坦克的旋转角度。代码如下:

private function onEnterFrame_(e:Event):void {

14

x+=vx; y+=vy; if (x>1125) { x=1125;

}

if (x<75) { x=75;

}

if (y>625) { y=625;

}

if (y<125) { y=125;

}

if (fangxiang==1) {

rotation=0; }

if (fangxiang==2) {

rotation=90;

}

if (fangxiang==3) {

rotation=180;}

if (fangxiang==4) {

rotation=270;} } }

15

玩家在移动时,通过按键盘上上下左右,坦克会随着按键进行和移动旋转,让坦克的炮口对着移动的方向。如果放开按键,则速度等于0。实现方法如下:

在舞台中加入键盘按下和弹起事件的监听器: public function Player():void {

编写键盘按下事件的方法:

private function onKeyDown_(ev:KeyboardEvent):void

stage。addEventListener(KeyboardEvent。KEY_DOWN,onKeyDown_); stage。addEventListener(KeyboardEvent。KEY_UP,onKeyUp_); addEventListener(Event。ENTER_FRAME,onEnterFrame_);

}

{

if (ev。keyCode==Keyboard。UP) { }

if (ev。keyCode==Keyboard。DOWN) { }

if (ev。keyCode==Keyboard。LEFT) { }

if (ev。keyCode==Keyboard。RIGHT) {

16

//按下上

vy=-6; vx=0; fangxiang=1;

//按下下

vy=6; vx=0; fangxiang=3;

//按下左

vx=-6; vy=0; fangxiang=4;

//按下右


Flash 游戏 毕业论文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:20110109你的膝盖健康吗x

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: