课程设计《雷电游戏》flash action script

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

青岛大学软件技术学院

二维动画课程设计报告题目名称 Flash游戏制作——《雷电游戏》

姓名范庆珍

专业数字媒体艺术

班级 08级数字媒体艺术

指导教师雷博

二0一0年一月十五日

目录

目录 (2)

一、游戏功能概述(雷电游戏) (3)

二、角色与场景设计 (6)

2.1 角色设计 (6)

2.2场景设计 (9)

3.1 模块一 (15)

3.1.1 简介 (15)

3.1.2 代码 (15)

3.2 模块二 (20)

3.2.1 简介 (20)

3.2.2 代码 (20)

四、测试与完善 (21)

五、小结 (22)

六、心得体会 (23)

致谢 (24)

参考文献 (25)

评语 (26)

一、游戏功能概述(雷电游戏)

1.利用键盘控制对象的运动,从而实现移动飞机,发出子弹的功能。并且飞机的移动,旋转和子弹的发射可以同时进行。并且根据障碍物摆放和场景图片的效果及敌人的布局设置不同的房间感受,利用影片剪辑做好的地方部队可以实现自身的移动。

2.利用函数hitTestObject(),实现子弹打中敌方障碍(坦克或飞机)物子弹消失,敌方障碍(坦克或飞机)爆破的功能,并且飞机又一定的射程范围;并且飞机碰到障碍物(房间内的墙壁)会坠毁并显示死亡的功能。

3.利用数据类型的转换使飞机每击中敌方飞机一次得一分,每击中敌方坦克一次得三分,并在舞台上显示自己的得分。

4.利用事件的监听,影片剪辑和按钮实现序幕和场景的转换和进入下一关。引入声音,利用编辑器编辑,达到想要的效果。

角色:

我方飞机

敌方坦克

敌方飞机

障碍物(房间墙壁)场景

1.序幕;

2.房间1(第一关);

2.房间2(第二关);

3.房间3(第三关);

二、角色与场景设计

2.1 角色设计

1.打开Flash CS3新建一个影片剪辑文件,首先向舞台导入一个战斗机图形并按ctrl+B键打散,再移除多余的背景部分。然后将整个图形转换为影片剪辑,再定义第2帧飞机坠毁,第3帧die ,并在第二帧上添加声音,.命名舞台上的实力为mc, 如下图所示。

2.以同样的方法来设计敌方的坦克和飞机,不同之处利用影片剪辑自身的时间轴添加动画使敌人可以运动。并以同样的方式绘制墙壁,使其运动并排列成房间。

敌机:

敌方坦克:

3.(1)再创建一个影片剪辑元件,制作一个子弹被发出去的动画过程。首先在该元件的注册点两侧绘制两个子弹图形,如下图所示。

(2)接下来将这个元件拖放到舞台上,并且移动到和战斗机实力同样的位置(注册点重合)。然后双击进入子弹的元件的编辑状态,调整两颗子弹的位置使他们与战斗机图形相吻合,如下图所示。

(3)然后在图层的第十五帧插入关键帧,将两颗子弹向上移动到舞台的外面,设置第一至十五桢运动渐变,从而形成两颗子弹被向上发射出去的效果。在第十五

帧添加代码stop ,使影片剪辑停止到这里。其时间轴如下图所示。由于在运行程序过程中要连续发射子弹-即要创建多个子弹实例。所以还必须设置次元件的链接类,这里设置为shot。

设置子弹的链接类:

2.2场景设计

第一场景-序幕:

1.导入图片和声音并排列编辑;

排列编辑成下图:

2.拖入影片剪辑,添加事件监听;(以雷电影片剪辑为例):

其他剪辑的拖入与之类似。

3.添加静态文本分数和动态文本fen,并添加代码。

var i :int=0;

fen.text=i.toString();

4.最后的效果如下图:

第二场景-房间1(第一关):

1.方法和过程基本与第一场景类似,再多添加两按钮和墙壁,并摆放敌人和墙壁的位置,形成阵型。(代码的添加在下一小节具体讲述,这里略。)

1)按钮;

按钮1:

按钮2(与按钮1类似,基本过程参照按钮1。):

2)墙和障碍

2.给制作的各个影片剪辑添加滤镜效果。1)背景图片滤镜;

2)角色的滤镜(仅举我机一例,其它略);

3.房间1(第一关)最后效果:

第三场景-房间2(第二关):

1)与上一场景制作方法基本相同,再重新摆放敌人和墙壁的位置,形成新的阵型。(代码的添加在下一小节具体讲述,这里略。)

2)为坦克的运动画图形元件土坡。

3)其最后效果见下图:

第四场景-房间3(第三关):

4)其与上一场景制作方法也基本相同,再重新摆放敌人和墙壁的位置,形成新的阵型。

并且用代码使墙壁停止运动,使坦克在墙面上运动和敌机在墙面上待机。(代码的添加在下一小节具体讲述,这里略。)其最后效果见下图:

三、游戏功能设计与实现

代码书写位置和层次:

3.1 模块一

3.1.1 简介

这是直接写在舞台上的代码下面是相应位置和层次,其具体实现的功能见代码部分的注释行。

3.1.2 代码

代码:帧1。

stop();

//使摄像头停在第一帧,从而只出现第一帧画面;

leidian.addEventListener(MouseEvent.CLICK ,nex1);

function nex1 (e:MouseEvent):void{

gotoAndPlay(2);

}

//在雷电影片剪辑上添加事件使鼠标点击时触发nex1函数

//从而进入下一帧,开始游戏!

代码:帧2。

stop();

//使摄像头停在第二帧,从而只出现第二帧画面;进入房间。

binnf2.addEventListener(MouseEvent.CLICK ,nexf2);

function nexf2 (e:MouseEvent):void{

gotoAndPlay(3);

}

//在nexf2按钮上添加事件使鼠标点击时触发nexf2函数

//从而进入下第三帧,游戏第二关;

bin2.addEventListener(MouseEvent.CLICK ,nex2);

function nex2 (e:MouseEvent):void{

gotoAndPlay(1);

}

//在nex2按钮上添加事件使鼠标点击时触发nex2函数

//从而进入下第一帧,出现序幕画面,当前游戏停止,开始新游戏的序幕画面;

var codeArr:Array =new Array(2);//new 出可放置两个数的一个数组;

stage.addEventListener(KeyboardEvent.KEY_DOWN,keydHd);

stage.addEventListener(KeyboardEvent.KEY_UP,keyudHd);

//向舞台上注册KEY_DOWN事件

var i :int=0;//定义一个变量i;输出这个数作为得到的分数。

fen.text=i.toString();//把i转换成字符串在舞台上的fen动态文本内显示;

function keydHd(e:KeyboardEvent){//键盘按下处理函数,将方向键和其他功能键分开存储;

if(e.keyCode==82)

{mc.rotation-=10;}

if(e.keyCode==86)

{mc.rotation+=10;}//实现飞机的左右旋转;

if(e.keyCode>=13&&e.keyCode<=40)

{codeArr[0]=e.keyCode;}

else{codeArr[1]=e.keyCode;}

}

//将方向键值存储到数组零位置,将其他键存储在一位置;

function keyudHd(e:KeyboardEvent){//键盘松开处理函数,数组清零;

if(e.keyCode>=37&&e.keyCode<=40)

{codeArr[0]=0;}

else{codeArr[1]=0;}

}

var inter1 :Number =setInterval(run1,10);

//根据当前按下的键执行动作,每10ms执行一次run函数

var f:shot;

function run1(){//定时执行函数

相关文档
最新文档