做flash小游戏

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

一、所用的函数和方法这个游戏的制作思路来自于Flash中的hittest方法,hittest方法主要用于侦测“空间”的交迭,它有两种方法:

mymovieclip.hittest(x,y,shapeflag);

mymovieclip.hittest(target);

mymovieclip.hittest(x,y,shapeflag):比较x和y坐标是否与mymovieclip实体交迭,shapeflag可以取两个值true和false,取true,则x,y坐标只要与mymovieclip实体(不含边界)的任何一点交迭,函数就返回true,否则返回false。若shapeflag值取false则x,y坐标只要与mymovieclip实体(含边界)的任何一点交迭,函数就返回true,否则返回false。

mymovieclip.hittest(target):比较target代表的实体和本mymovieclip实体是否交迭,交迭函数返回true,否则返回false。游戏中将使用这种方法。

在游戏中还有几个比较重要的语句:duplicatemovieclip方法和Removemovieclip方法以及Attachmovie方法。

Duplicatemovieclip方法是在主场景中(或在其他影片剪辑中)制作一个影片剪辑实体的复制件,这个复制件将会以某个深度值(深度值高的对象覆盖深度值低的对象)放置在其源实体上。

Removemovieclip方法是删除影片剪辑实体的复制件,不能删除在剪辑时手工放置在舞台上的实体。

Attachmovie方法几乎和duplicatemovieclip方法完全相同,但是它不需要在舞台上事先放置一个实体共选择,而可以直接从库中取出一个影片剪辑实体。本例中战斗机发出的子弹是通过这种方法实现的,而敌机发出的子弹是事先在舞台上放一个剪辑,也就是用duplicatemovieclip来复制的。

二、元件的制作

1.新建一个场景“场景1”,选择“修改”菜单的“文档”选项,在弹出的文档属性对话框中背景色修改为黑色,尺寸就用默认的550*400,帧频为50 fps。

2.建立一个影片剪辑(以下简称MC),命名为“plane”,这个影片剪辑是作为用来控制的战斗机的。在该影片剪辑中的第一帧中插入一个关键帧,在编辑区中画一个飞机图形,也可以插入一个飞机矢量图。第一帧的帧动作为“stop()”。在第二帧处插入空白关键帧,画上一个矩形,矩形要比战斗机小很多。然后在第六帧中插入空白关键帧,画一个爆炸图形,在属性面板设置第二帧到第六帧的补间动作为“形状”,第六帧的帧动作为“gotoAndPlay(1)”。

3.新建一个MC元件“fire”,第一帧是一个空白关键帧,第二帧插入一个关键帧,画一个椭圆作为“plane”发出的用来射击的炮弹,帧动作为“stop()”。

4.新建一个MC元件“bullet”,把“fire”剪辑拖入编辑区中央,剪辑名称为“fire”,帧动作“stop()”。该剪辑编辑好后,在影片库中会出现其选项,用鼠标右击“bullet”选项,在弹出的快捷菜单中选择“链接”,标识符为“laser”,并勾选“为动作脚本输出”。

这是关键步骤,因为要用attachmovie调用库剪辑进行复制,如果没有这一步,attachmovie 就无法中库中复制出剪辑,游戏运行时“plane”也将无法发出炮弹射击。然后在bullet

剪辑中给“fire”设置动作代码:

onClipEvent (load) {//载入时发生动作

n=_root.enemyNumber;//画面中的敌人飞机数量赋值给n

speed=10//speed初始值为0

}

onClipEvent (enterFrame) {//进入帧时发生

for(i=0;i

if(_root["new"+i].ship1._currentframe==1){ //画面中的敌机是不是在其首帧

if(this.hitTest(_root["new"+i])) {//判断该剪辑是不是与画面中复制出的敌机交迭

_root.score+=10 //如果交迭,生命值加10

_root["new"+i].ship1.gotoAndPlay(2); //敌机爆炸

removeMovieClip (_parent) ;//从场景中删除剪辑

}

}

if (_parent._x<=550) { //如果x坐标小于550 ,x坐标加变量speed 的值

_parent._x += speed;

} else {//如果x坐标大于550,则删除剪辑

removeMovieClip (_parent);

}

}

6.新建MC命名“explode”。在第一帧中画一个方形,然后在第五帧中插入空白关键帧,在该帧中用铅笔工具画一个爆炸图形,然后回到第一帧,在属性面板中设置该帧到第五帧的补间动作为“形状”。最后在第六帧插入一个空白关键帧,该帧设置命令“stop()”。如下图所示:

7.建立MC元件“enemyplane”。在第一帧中画一个敌人飞机,并在时间轴上设置命令“stop()”,在第二帧插入空白关键帧,将刚才的explode剪辑拖入enemyplane剪辑中原来飞机的位置,在时间轴第二帧也设置stop()。

8.新建MC元件“enemy”,将enemyplane元件拖入第一帧,剪辑名称为ship1,帧动作为stop()。

9.接下来该做敌人发出的炮弹了,新建MC元件“ball”,在编辑区画上一个椭圆,大小要合适,因为这是用做游戏中发出的炮弹的。

10.最后新建两个按钮元件,一个“start”,另一个是“exit”。.

三、代码控制

1.回到主场景,把第一个图层改名为“start”,在第一帧中插入关键帧,帧动作为:

clean函数用来删除所有多余的影片剪辑,它的功能在第一次运行时没有作用,而在游戏运行后,“plane”的生命值为零时返回这一帧,如果没有clean函数,将出现无数个被复制的影片剪辑。

2.把“start”按钮和“exit”按钮拖入场景中,“start”按钮的动作脚本为

on(release){ //释放鼠标时进入第三帧,开始游戏

gotoAndPlay(3);

}

“exit”按钮的动作脚本为

on (release) { //释放鼠标时,退出游戏

fscommand("quit", "1");

}

相关文档
最新文档