多媒体课程报告Word文件下载.docx
- 文档编号:22949337
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:12
- 大小:360.42KB
多媒体课程报告Word文件下载.docx
《多媒体课程报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《多媒体课程报告Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
游戏中要控制战斗机不能被敌机发射的炮弹击中,也不能与飞来的敌机碰撞,否则每碰撞或击中一次都会减少战斗机的生命值,生命值小于0时,或者当时间超过60时,游戏均失败,退到初始画面。
2、项目内容与操作步骤(提交截图)
1.在做flash小游戏前,我们首先要构思好我们要实现的最终的结果,并且要准备好所要的素材。
对于我要制作的战斗机空战游戏,首先我们应该要准备战斗机这个素材以及两战斗机相撞时所产生的爆炸效果素材。
2.准备了两中战斗机的模型图片,经过Photoshop处理。
处理过程如下:
首先打开图片,在复制图层1,得图层1副本(如图1所示);
使用魔法棒,单击选取,按delete键(如图2所示),最后将图保存以web保存,以相同的方法制作敌军的战斗机,以及两战斗机相撞时的爆炸效果图。
3.新建一个场景“场景1”,选择“修改”菜单的“文档”选项,在弹出的文档属性对话框中背景色修改为黑色,尺寸就用默认的550*400,帧频为50fps,并命名为战斗机空战。
(如图3所示)
图3
4.将在Photoshop中保存好了的战斗机素材导入到库中,并将此图片转换为影片剪辑元件,命名为“plane”,这个影片剪辑是作为用来控制的战斗机的。
第一帧的帧动作为“stop()”。
在第二帧处插入空白关键帧,画上一个椭圆,椭圆要比战斗机小很多。
然后在第六帧中插入空白关键帧,将爆炸素材导入到库中,并复制到第六帧,在属性面板设置第二帧到第六帧的补间动作为“动画”,第六帧的帧动作为“gotoAndPlay
(1)”。
(如图4所示)
图4
5.新建一个影片剪辑元件“fire”,第一帧是一个空白关键帧,第二帧插入一个关键帧,画一个椭圆作为“plane”发出的用来射击的炮弹,帧动作为“stop()”。
导入Laser声音到库中,并将其插入到fire元件中的第二帧(如图5所示)
图5
6.新建一个影片剪辑元件“bullet”,把“fire”剪辑拖入编辑区中央,剪辑名称为“fire”,帧动作“stop()”。
该剪辑编辑好后,在影片库中会出现其选项,用鼠标右击“bullet”选项,在弹出的快捷菜单中选择“链接”,标识符为“laser”,并勾选“为动作脚本输出”。
(如图7所示)
图7
这是关键步骤,因为要用attachmovie调用库剪辑进行复制,如果没有这一步,attachmovie就无法中库中复制出剪辑,游戏运行时“plane”也将无法发出炮弹射击。
然后在bullet剪辑中给“fire”设置动作代码:
onClipEvent(load){ //载入时发生动作
n=_root.enemyNumber;
//画面中的敌人飞机数量赋值给n
speed=0 //speed初始值为0
}
onClipEvent(enterFrame){ //进入帧时发生
Array()
for(i=0;
i<
n;
i++){
if(_root["
new"
+i].ship1._currentframe==1){//画面中的敌机是不是在其首帧
if(this.hitTest(_root["
+i]))//判断该剪辑是不是与画面中复制出的敌
机交迭
{ _root.score+=10;
//如果交迭,生命值加10
_root["
+i].ship1.gotoAndPlay
(2);
//敌机爆炸
removeMovieClip(_parent);
//从场景中删除剪辑
}
}
}
if(_parent._x<
=550){//如果x坐标小于550,x坐标加变量speed的值
_parent._x+=speed;
}else{ //如果x坐标大于550,则删除剪辑
removeMovieClip(_parent);
}
}
7.新建影片剪辑命名“explode”。
在第一帧中画一个方形,然后在第五帧中插入空白关键帧,将爆炸素材导入到库中,并复制到第五帧,然后回到第一帧,在属性面板中设置该帧到第五帧的补间动作为“动画”。
最后在第六帧插入一个空白关键帧,该帧设置命令“stop()”,并在第一帧中点击属性设置声音为laster(如图8所示)
图8
8.建立影片剪辑元件“enemyplane”。
在第一帧中画一个敌人飞机,并在时间轴上设置命令“stop()”,在第二帧插入空白关键帧,将刚才的explode剪辑拖入enemyplane剪辑中原来飞机的位置,在时间轴第二帧也设置stop()。
9.新建影片剪辑元件“enemy”,将enemyplane元件拖入第一帧,剪辑名称为ship1,帧动作为stop()。
10.接下来该做敌人发出的炮弹了,新建MC元件“ball”,在编辑区画上一个椭圆,大小要合适,因为这是用做游戏中发出的炮弹的。
11.最后新建一个按钮元件,一个“开始”。
12.回到主场景,把第一个图层改名为“star”,在第一帧中插入关键帧,帧—动作为:
functionclean(){
for(iin_root){
_root[i].removeMovieClip();
}
_root.clean();
stop();
clean函数用来删除所有多余的影片剪辑,它的功能在第一次运行时没有作用,而在游戏运行后,“plane”的生命值为零时返回这一帧,如果没有clean函数,将出现无数个被复制的影片剪辑。
并可以在图层“star”中加入静态文本框。
13.把“开始”按钮拖入场景中,单击“开始”按钮的右键,在动作—按钮中写下如下代码:
on(release){//释放鼠标时进入第三帧,开始游戏
gotoAndPlay
(2);
}
14.新建一个图层,命名为“victor”,在该层第二帧中插入关键帧,在场景中用文字工具写入“youwin!
!
”,设置字号为25,颜色为红色,也可以多添加静态文本框;
根据个人的想象设计,我在此将一个GIF图像导入到库中,并将此GIF图像加入文本框中。
(如图9所示)
图9
15.在添加第三个图层,命名为“action”,在该层第三帧插入关键帧,写入代码如下:
enemyNumber=5 //每次画面中出现五个敌人
for(i=0;
enemyNumber;
i++){//如果画面中敌人数小于五,则复制出敌人的影片剪辑
duplicateMovieClip("
enemy"
"
+i,30+i)
}
life=100;
//生命值为100
score=0;
//开始得分为0
time=60;
//时间初始值为60
stop();
16.在该帧场景中添加三个静态文本框和三个动态文本框,用来表示生命值,得分以及时间限制。
静态文本框内的内容分别是"
生命:
"
、"
得分:
以及"
剩余时间:
(如图10所示),第一个动态文本框命变量值为life(如图11所示),第二个动态文本框的变量值为score(如图12所示),第三个动态文本框的变量值为time(如图13所示)
图10图11
图12
图13
17.再增加一个图层命名为“plane”,在第三帧插入关键帧。
选中“plane”层的第三帧(如图14所示),把“plane”拖入,剪辑名称为“ship”。
(如图15所示)
图14图15
18.右击“plane”剪辑,在动作面板里写入代码:
onClipEvent(load){ //载入时进行初始化
speed=6;
sy=_y;
ang=0;
onClipEvent(enterFrame){
_y=sy+4*Math.cos(ang+=0.092);
//用cos函可以是飞机有在空中飘动的效果
c=_root.score;
//给c变量赋值,初试状态为“0”
if(c>
=500){ //如果c的值(得分)大于500,则胜利结束游戏
_root.gotoAndStop
(2);
}
if(_root.life<
=0||_root.time<
=0){ //如果生命值小于等于0或者剩余时间小于等于0,则重新开始游戏
_root.gotoAndStop
(1);
}
//当玩家按下上、下、左、右方向键时,飞机可以移动
if(Key.isDown(Key.down)and_y<
400){_y+=speed;
sy+=speed}
if(Key.isDown(Key.up)and_y>
0){_y-=speed;
sy-=speed}
if(Key.isDown(Key.right)and_X<
550){_x+=speed;
if(Key.isDown(Key.left)and_X>
0){_x-=speed;
if(Key.isDown(Key.space)){//当按下空格键时,飞机开火,用了一个变量a,使每按一下空格发出一发炮弹,如果不设置这个变量,那么当按下空格键时,炮弹将连续飞出。
if(!
a){ //如果a为false
shotCount++;
depth=(shotCount%100)+100
_root.attachMovie("
laser"
"
sparo"
+shotCount,depth);
//attachmovie方法是从库中直接调用复制影片剪辑“fire”,它的标识符为“laser”。
_root["
+shotCount]._x=this._x+(_width-45)
+shotCount]._y=this._y;
//复制出的“fire”剪辑的初试位置。
a=true;
}
}else{a=false;
19.在新增一个图层命名为“enemy”,选中“enemy”层的第三帧插入关键帧,并把“enemy”和“ball”剪辑拖入(如图16所示),剪辑名称分别为“enemy”和“enemylaser”,导入InsideyourComputerrestoreup.wav声音,并可以在ball中可以在属性中设置声音为InsideyourComputerrestoreup.wav(如图17所示)。
图16
图17
20.右击“enemy”剪辑,在“动作”面板里设置代码
onClipEvent(load){
sy=random(400)+10;
//取随机数
functionreset(){
ship1.gotoAndStop
(1);
speed=random(10)+2;
//敌机的飞行速度是一个随机数
_y=random(300)+_height;
//敌机的初始y坐标取随机数
_x=550+_y;
_root.firePower=100;
reset()
onClipEvent(enterFrame){
_root.time-=1/60;
//剩余时间倒计时
if(this.ship1._currentframe==1){//敌机剪辑在第一帧
_y=sy+speed*Math.cos(speed+=0.032);
//敌机飞行时有浮动的效果
if(this.hitTest(_root.ship)){//如果该剪辑与战斗机相撞
ship1.gotoAndStop
(2);
//敌机爆炸
_root.ship.play();
_root.life-=10;
//生命值减10
}
if(random(_root.firePower)+1==10){
Count++;
depth=(Count%100)+200;
//敌机飞行时发出炮弹
duplicateMovieClip(_root.enemyLaser,"
num"
+Count,depth);
//炮弹的初始坐标就是敌机当前所在位置的坐标
_root["
+Count]._y=this._y
}
_x-=speed
if(_x<
-10) {reset()}
21.右击“ball”剪辑,在“动作”面板里设置代码:
onClipEvent(load){
speed=15;
if(!
_root.shipDead){
if(this.hitTest(_root.ship)){
_root.life-=5;
removeMovieClip(this)
}
_x-=speed;
if(_x<
-10){removeMovieClip(this)}
22.新建一个图层命名为背景层;
在第一帧中导入素材“星空”的图片到舞台,设置图片的大小与舞台大小相同,并放在最底层(如图18所示)
图18
23.在新建一个图层命名为运行背景;
在第二帧插入空白关键帧,在第三帧插入关键帧并导入素材背景到舞台,设置其大小与舞台一致。
放在背景层下(如图19所示)
图19
三、项目结果(提交.psd或者.fla和.swf文件)
见附件文件夹中.fla和.swf文件
四、分析与讨论-
1、在制作小游戏时,一定要有清楚的思路,以及明确的目的;
2、新建元件或将元件拖入场景中,一定要注意是否需要取实例名以及变量名;
3、在对其它的某层进行操作时,最好把其他的图层锁定;
4、在加入音乐时,要注意导入音乐后要设置属性面板中的声音属性;
5、对于什么情况下游戏开始,结束的代码要很熟悉;
如何控制子弹的发射,战斗机的方向与位移以及敌军的战斗机的随机产生以及飞行的位移等代码要掌握并要合理设计。
六、教师评语
签名:
日期:
成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多媒体 课程 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)