多媒体flashFlex课程设计坦克大战.docx

上传人:b****9 文档编号:23346150 上传时间:2023-05-16 格式:DOCX 页数:32 大小:245.87KB
下载 相关 举报
多媒体flashFlex课程设计坦克大战.docx_第1页
第1页 / 共32页
多媒体flashFlex课程设计坦克大战.docx_第2页
第2页 / 共32页
多媒体flashFlex课程设计坦克大战.docx_第3页
第3页 / 共32页
多媒体flashFlex课程设计坦克大战.docx_第4页
第4页 / 共32页
多媒体flashFlex课程设计坦克大战.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

多媒体flashFlex课程设计坦克大战.docx

《多媒体flashFlex课程设计坦克大战.docx》由会员分享,可在线阅读,更多相关《多媒体flashFlex课程设计坦克大战.docx(32页珍藏版)》请在冰豆网上搜索。

多媒体flashFlex课程设计坦克大战.docx

多媒体flashFlex课程设计坦克大战

 

************学院

课程设计

课程名称《多媒体技术应用》课程设计

题目坦克游戏

专业*********

班级*******

学号*************

姓名*****

成绩

指导教师*******

2010年6月14日至2010年6月18日

课程设计任务书

设计题目:

坦克游戏

设计目的:

本课程的设计的目的是通过实践使同学们经历多媒体应用系统开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。

结合具体的案例,理解并初步掌握常用多媒体软件的使用;通过《多媒体课程设计》实验,使学生能够达到提高多媒体技术的实际开发应用能力,了解系统分析、系统设计、系统实施的主要环节和步骤以及软件文档的制作过程。

设计任务:

(在规定的时间内完成下列任务)

运用FlashCS4设计制作坦克游戏。

设计我方坦克、敌方坦克、子弹以及爆炸效果。

要求完成坦克移动方向和子弹发射数量以及方向的控制,添加声音效果。

1.1具体要完成的任务是:

1.21.完成整个程序的设计及组合;经教师检查及答辩;

1.32.写出规范的课程设计说明书;

1.43.课程设计结束后交设计说明书等文档;以班级为单位刻录完整的多媒体作品光盘。

1.54.文档雷同者按不及格处理;

1.65.课程设计报告采取统一格式。

时间安排

2010年6月14日布置课程设计任务;讲述设计目的、内容、时间安排与本次课程设计的

要求查阅资料,确定设计题目;

2010年6月15日按各设计题,准备原始素材的录入和获取;书写需求分析报告;

2010年6月16日系统总体设计,查阅资料,对各种素材进行加工处理及设计;

2010年6月17日系统详细设计,按各设计题,继续查阅资料,对各种素材进行加工处理及设计;

2010年6月18日提交课程设计报告及相关文档。

具体要求

1.课程设计报告按国际通用格式书写,具体格式要求请在网络上查阅;

2.每位学生应独立完成各自的任务且每天至少在设计室工作半天;

3.

指导教师签名:

2010年6月11日

教研室主任(或责任教师)签名:

2010年6月11日

 

目录

1设计题目4

2设计目的4

3开发环境4

4素材设计4

4.1启动flash44

4.2坦克整体设计4

4.2.1坦克轮子制作4

4.2.2坦克身体制作4

4.2.3坦克炮身制作4

4.3敌机整体设计4

4.4.1子弹外观制作4

4.4.2火焰设计与制作4

4.4.3子弹整体合成4

4.5爆炸整体设计4

5素材修改与导出4

5.1修改“坦克整体”文档,4

5.2修改“敌机整体”文档4

5.3修改“子弹整体”文档4

6项目实现4

6.1启动AdobeFlashBuilder44

6.2项目建立4

6.3素材导入4

7项目总体(Tankwar_004)编码4

7.1Tankwar_001应用程序代码4

7.2Tank类代码4

7.3Foe类代码4

7.4Bullet类代码4

8实现界面效果4

9设计心得体会4

10师生答辩与老师评语4

1设计题目

课程设计题目:

坦克游戏

2设计目的

本课程的设计的目的是通过实践使同学们经历多媒体应用系统开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。

结合具体的案例,理解并初步掌握常用多媒体软件的使用;通过《多媒体课程设计》实验,使学生能够达到提高多媒体技术的实际开发应用能力,了解系统分析、系统设计、系统实施的主要环节和步骤以及软件文档的制作过程。

3开发环境

硬件环境:

AMDAthlonQL-64双核处理器、2G内存、ATIRadeon3200Graphics显卡。

软件环境:

window7旗舰版操作系统、Adobeflash4应用软件、AdobeFlashBuilder4应用软件、office2007办公软件。

4素材设计

4.1启动flash4

打开桌面上的flash4图标

,进入flash4

4.2坦克整体设计

4.2.1坦克轮子制作

步骤:

1.新建flash文档,导入素材1坦克皮带,如图1;

2.利用矩形工具和转换描点工具,调好颜色,画出皮带上面的部分,如图2将皮带分散到图层,并与之组合,同时制作皮带动态效果,选定皮带图层在第5帧插入关键帧将皮带上移并创建传统补间;

3.并将其整体转换为元件“坦克轮子”,效果如图3所示,保存命名为“坦克轮子”。

图1图2图3

4.2.2坦克身体制作

步骤:

1.新建flash文档;

2.利用矩形工具和转换描点工具,调好颜色,制作出如图4所示效果;

3.将其整体转换为元件“坦克身体”,保存命名为“坦克身体”。

图4图5

4.2.3坦克炮身制作

步骤:

1.新建flash文档;

2.利用矩形工具和转换描点工具,调好颜色,制作出如图5所示效果;

3.将其整体转换为元件“炮身”,保存并命名为“炮身”。

4.2.4坦克炮筒制作

1.先建flash文档;

2.利用矩形工具和转换描点工具,调好颜色,并用钢笔在炮筒中间画一条白色的竖线,制作出如图6所示效果;

3.将其整体转换为元件“炮筒”,保存并命名为“炮筒”。

图6

4.2.5坦克整体合成

步骤:

1.新建flash文档;

2.将前面制作的“坦克轮子”、“坦克身体”、“炮身”、“炮筒”等元件复制粘贴到库中,将坦克轮子在场景中复制粘贴为二,然后一一将其合并分散到图层,图层从上到下依次为炮筒——炮身——坦克身体——坦克轮子;

3.将其整体转换为元件“坦克整体”,效果图如图7保存并命名为“坦克整体”。

图7图8

4.3敌机整体设计

4.3.1仿制坦克整体

新建flash文档,复制“坦克整体”元件到库。

4.3.2改变颜色

点击坦克身体,利用颜料桶工具给其改变颜色与坦克区分开,如图8所示,并保存命名为“敌机”。

4.4子弹整体设计

4.4.1子弹外观制作

新建flash文档,利用矩形工具、椭圆工具和变形工具,调好颜色,制作如图9所示的子弹外观,转换为元件“子弹”。

4.4.2火焰设计与制作

利用椭圆工具,调节颜色,制作如图10所知效果,转换为元件“火焰”。

4.4.3子弹整体合成

将“子弹”和“火焰”两个元件分散到图层,适当调节位置,将它们转换为元件“子弹整体”,效果如图11,保存并命名该文档为“子弹整体”。

图9图10图11

4.5爆炸整体设计

新建flash文档,利用椭圆工具,调节颜色,强调填充颜色调为“放射状”,首先在第一帧画个椭圆调节颜色渐变效果,让其很小;然后依次插入第2、3、4、5帧,调节每帧依次圆逐渐变大,效果如图12,保存并命名为“爆炸”。

图12

5素材修改与导出

5.1修改“坦克整体”文档,

修改文档大小为100*100,调整坦克的大小,依次插入第2、3、4帧,每帧都将坦克方向顺时针旋转90度,效果如图13,并将其导出为导出影片命名为“tankClip.swf”。

图13

5.2修改“敌机整体”文档

修改文档大小为100*100,调整坦克的大小,依次插入第2、3、4帧,每帧都将坦克方向顺时针旋转90度,效果如图14,并将其导出为导出影片命名为“foeClip.swf”。

图14

5.3修改“子弹整体”文档

修改文档大小为100*100,调整子弹的大小,依次插入第2、3、4帧,每帧都将子弹方向顺时针旋转90度,效果如图15,并将其导出为导出影片命名为“bulletClip.swf”。

图15

5.4修改“爆炸整体”文档

修改文档大小为100*100,调整爆炸的大小,并将其导出为导出影片命名为“blastClip.swf”。

6项目实现

6.1启动AdobeFlashBuilder4

打开桌面上的AdobeFlashBuilder4图标

,进入AdobeFlashBuilder4。

6.2项目建立

依次点击“文件”——“新建”——“ActionScript项目”,取项目名为“Tankwar_001”,并更改“使用特定的SDK(S):

Flex3.5”,单击“完成”。

6.3素材导入

在src文件夹下新建三个包“clips”、“com.wepull.tank”、“imgs”,将上面保存的

“tankClip.swf”、“foeClip.swf”、“bulletClip.swf”、“blastClip.swf”复制粘贴到包“clips”中;将图片素材“bg.PNG”复制粘贴到包“imgs”中;在包“com.wepull.tank”中新建三个类“Tank”、“Foe”、“Bullet”,其代码见编码。

6.4项目版本升级

由于功能的增多,项目版本需要不断增强,就要不断创建新的版本,在这里我们创建的版本有Tankwar_001、Tankwar_002、Tankwar_003、Tankwar_004,创建新版本时只需将旧的版本复制粘贴并改名,再添加新的功能即可。

7项目总体(Tankwar_004)编码

7.1Tankwar_001应用程序代码

xmlversion="1.0"encoding="utf-8"?

>

ApplicationapplicationComplete="init(event)"xmlns:

mx="layout="absolute"minWidth="955"minHeight="600">

Style>

Application{

background-image:

Embed("imgs/bg.png");

background-repeat:

repeat;

background-position:

center;

background-blend:

multiply;

borderSkin:

ClassReference("com.degrafa.skins.CSSSkin");

}

Style>

Script>

[CDATA[

importcom.wepull.tank.Bullet;

importcom.wepull.tank.Foe;

importcom.wepull.tank.Tank;

importmx.controls.Alert;

importmx.core.UIComponent;

importmx.events.FlexEvent;

publicvartank:

Tank=newTank();//产生坦克实例

publicvarf:

Foe=newFoe();

protectedfunctioninit(event:

FlexEvent):

void

{

this.addChild(tank);//将坦克实例加载到application中

tank.x=0;

tank.y=200;

this.addChild(f);

stage.addEventListener(Event.ENTER_FRAME,onflush);

}

publicfunctiononflush(e:

Event):

void{

vararr:

Array=tank.bularr;//所有子弹

for(vari:

Number=1;i

varbul:

Bullet=arr[i]asBullet;

if(bul!

=null&&bul.useable==false){

if(ifhit(bul,f)){

bul.blast();//爆炸

f.goout();

}

}

}

}

/*检测两个对象是否相撞*/

publicfunctionifhit(o1:

UIComponent,o2:

UIComponent):

Boolean{

varm_x:

Number=Math.abs(o1.x-o2.x);//两个对象x轴的差值

varm_y:

Number=Math.abs(o1.y-o2.y);//两个对象y轴的差值

if(m_x<50&&m_y<50){//相撞

returntrue;

}

returnfalse;

}

]]>

Script>

Application>

7.2Tank类代码

packagecom.wepull.tank

{

importflash.display.MovieClip;

importflash.events.Event;

importflash.events.KeyboardEvent;

importmx.controls.Alert;

importmx.controls.SWFLoader;

importmx.core.Application;

importmx.core.UIComponent;

importmx.events.FlexEvent;

publicclassTankextendsUIComponent

{

//移动方法发射子弹方法被击中爆炸外观

/*加载外观*/

//定义外部swf文件的加载器

publicvarswfload:

SWFLoader=newSWFLoader();

//外观

publicvardispaly:

MovieClip;

//速度

publicvarsp:

Number=10;

//方向

publicvarasp:

String="";//U:

上R:

右D:

下L:

//炮口方向

publicvarfireasp:

String="U";

//弹夹

publicvarbularr:

Array=newArray();

publicfunctionTank()

{

super();

//利用外部文件加载器加载文件

//添加监听当对象构件完成后调用complete方法

addEventListener(FlexEvent.CREATION_COMPLETE,complete);

}

/*指定加载文件路径并且添加加载完成事件*/

publicfunctioncomplete(e:

FlexEvent):

void{

swfload.source="clips/tankClip.swf";

swfload.addEventListener(Event.COMPLETE,swfloaded);

addChild(swfload);

}

publicfunctionswfloaded(e:

Event):

void{

dispaly=swfload.contentasMovieClip;

addChild(dispaly);//加载外观

dispaly.gotoAndStop

(1);//让影片剪辑转到第1帧并停止

//--每次进入新的帧就调用刷新方法

stage.addEventListener(Event.ENTER_FRAME,onflush);

//添加键盘监听键盘按下的时候

stage.addEventListener(KeyboardEvent.KEY_DOWN,onkey);

//监听键盘弹起

stage.addEventListener(KeyboardEvent.KEY_UP,onkeyend);

initBul();//初始化弹夹

}

publicfunctiononflush(e:

Event):

void{

//根据坦克的方向移动

if(asp=="U"){//向上

dispaly.gotoAndStop

(1);

this.y-=sp;

}elseif(asp=="R"){//向右

dispaly.gotoAndStop

(2);

this.x+=sp;

}elseif(asp=="D"){//向下

dispaly.gotoAndStop(3);

this.y+=sp;

}elseif(asp=="L"){//向左

dispaly.gotoAndStop(4);

this.x-=sp;

}

}

/**开火方法

*产生子弹,给子弹一个方向

*把子弹放到application中

**/

publicfunctionfire():

void{

varbul:

Bullet=getBul();

bul.useable=false;//发射出去后子弹不可用

bul.asp=this.fireasp;//子弹方向与坦克炮口方向同步

bul.x=this.x;

bul.y=this.y;

//获得主application

varapp:

Application=this.parentApplicationasApplication;

app.addChild(bul);

}

//得到子弹

publicfunctiongetBul():

Bullet{

varb:

Bullet;

for(vari:

int=1;i<=50;i++){

vartemp:

Bullet=bularr[i]asBullet;//根据i得到子弹

if(temp.useable==true){//是否可用

b=temp;

returnb;

}

}

returnb;

}

/**

*a-->65

*w-->87

*d-->68

*s-->83

*z-->90

**/

publicfunctiononkey(e:

KeyboardEvent):

void{

varkey:

int=e.keyCode;

if(key==87){//往上走

asp="U";

fireasp="U";//更新炮口方向

}elseif(key==68){//向右

asp="R";

fireasp="R";

}elseif(key==83){//向下

asp="D";

fireasp="D";

}elseif(key==65){//向左

asp="L";

fireasp="L";

}elseif(key==90){//开火

fire();//调用开火方法

}

}

//键盘弹起方向无

publicfunctiononkeyend(e:

KeyboardEvent):

void{

asp="";

}

/**对弹夹初始化

*产生子弹并放到弹夹

*同时添加到主application中

**/

publicfunctioninitBul():

void{

varapp:

Application=this.parentApplicationasApplication;

for(vari:

int;i<=50;i++){

varb:

Bullet=newBullet();//产生一个子弹

b.goout();//移除到看不见

bularr.push(b);//把子弹放到弹夹中

app.addChild(b);

}

}

}

}

7.3Foe类代码

packagecom.wepull.tank

{

importcom.degrafa.states.AddChild;

importflash.display.MovieClip;

importflash.display.Stage;

importflash.events.Event;

importmx.automation.events.EventDetails;

importmx.controls.SWFLoader;

importmx.core.UIComponent;

importmx.events.FlexEvent;

publicclassFoeextendsUIComponent

{

publicvarswfload:

SWFLoader=newSWFLoader;

publicvardispaly:

MovieClip;

publicvarsp:

Number=2;

publicvarasp:

String="";

publicfunctionFoe()

{

randomAsp();

addEventListener(FlexEvent.CREATION_COMPLETE,complete);

}

publicfunctioncomplete(e:

FlexEvent):

void{

swfload.source="clips/foeClip.swf";

swfload.addEventListener(Event.COMPLETE,swfloaded);

addChild(swfload);

}

publicfunctionswfloaded(e:

Event):

void{

dispaly=swfload.contentasMovieClip;

addChild(dispaly);

stage.addEve

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1