|
首页 | 名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
越来越多的Flash兴趣者已经不满意仅仅去欣赏别人制作的Flash,而是希望自己也能投入到Flash制作者的行列,成为一个Flash高手。今天,我们就用一个游戏实例让广大的Flash兴趣者了解一下Flash在制作游戏时的基本思路和方式,文章末尾提供.fla原文件下载。 今天我们要做的是一个战斗机攻击敌机的游戏,启动游戏后,单击“start”按钮,游戏开始。用键盘的方向键控制战斗机,按空格键发射子弹摧毁敌机,每摧毁一架战斗机都会加上适当分数,假如分数大于500,就会胜利完成游戏。游戏中要控制战斗机不能被敌机发射的炮弹击中,也不能与飞来的敌机碰撞,否则每碰撞或击中一次都会减少战斗机的生命值,生命值小于0时,游戏失败,退到初始画面。 下面我们分别从思路、元件制作、代码控制几个方面介绍这个小游戏的制作过程。 这个游戏的制作思路来自于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方式和duplicatemovieclip方式以及duplicatemovieclip方式。 duplicatemovieclip方式duplicatemovieclip方式 duplicatemovieclip方式 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) { //载入时发生动作 } 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”,在第一帧中插入要害帧,帧动作为: function clean() { clean函数用来删除所有多余的影片剪辑,它的功能在第一次运行时没有作用,而在游戏运行后,“plane”的生命值为零时返回这一帧,假如没有clean函数,将出现无数个被复制的影片剪辑。 2.把“start”按钮和“exit”按钮拖入场景中,“start”按钮的动作脚本为 on(release){ //释放鼠标时进入第三帧,开始游戏 “exit”按钮的动作脚本为 on (release) { //释放鼠标时,退出游戏 3.添加第二层,命名为“victor”,在该层第二帧中插入要害帧,在场景中用文字工具写入“you win”,设置字号为84,颜色为黄色。也插入“start”和“exit”按钮,动作脚本同上。 4.添加第三层,命名为“action”,在该层第三帧插入要害帧,写入代码如下: enemyNumber=5 //每次画面中出现五个敌人 5.在该帧场景中添加两个静态文本框和两个动态文本框,用来表示生命值和得分。静态文本框内的内容分别是“生命”和“得分”,第一个动态文本框命变量值为life,第二个动态文本框的变量值为score。 6.再增加两个图层,一个命名为 “plane”,一个命名为“enemy”,并分别在第三帧插入要害帧。选中“plane”层的第三帧,把“plane”拖入,剪辑名称为“ship”。选中“enemy”层的第三帧,把“enemy”和“ball”剪辑拖入,剪辑名称分别为“enemy”和“enemylaser”。 右击“plane”剪辑,在动作面板里写入代码: onClipEvent (load) { //载入时进行初始化 onClipEvent (enterFrame) { } //当玩家按下上、下、左、右方向键时,飞机可以移动 if (Key.isDown(Key.down)and _y<400) {_y += speed; sy+=speed} } 7.右击“enemy”剪辑,在“动作”面板里设置代码 onClipEvent (load) { } onClipEvent (enterFrame) { } 8.右击“ball”剪辑,在“动作”面板里设置代码
onClipEvent (load) { 四、总结 至此,整个游戏就全部完成了。在以上过程中,为了讲解尽可能的简洁,我没有讲述插入音效的过程,实际上插入的方式也是很简朴的,只要把合适的声音放到合适的帧中就可以了。 其实用Flash制作这样的简朴小游戏并不困难,只要大家能灵活运用Flash 中的方式或函数,就一定能编写出更精彩的作品。点击这里下载源文件 返回类别: Flash教程 上一教程: 选择题课件制作一例 下一教程: Flash制作一款美丽的韩国式下拉菜单 您可以阅读与"Flash制作出色的空战游戏"相关的教程: · Flash MX 2004实例制作视频教程:太空战记游戏(4) · Flash MX 2004实例制作视频教程:太空战记游戏(1) · Flash MX 2004实例制作视频教程:太空战记游戏(2) · Flash MX 2004实例制作视频教程:太空战记游戏(5) · Flash中枪战游戏基础制作 |
快精灵印艺坊 版权所有 | 首页会员中心在线印刷在线编辑付款方式索取样品设计指南连锁门店 |