多媒体flashFlex课程设计坦克大战.docx
- 文档编号:8940710
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:32
- 大小:245.87KB
多媒体flashFlex课程设计坦克大战.docx
《多媒体flashFlex课程设计坦克大战.docx》由会员分享,可在线阅读,更多相关《多媒体flashFlex课程设计坦克大战.docx(32页珍藏版)》请在冰点文库上搜索。
多媒体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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多媒体 flashFlex 课程设计 坦克 大战