1、在该影片剪辑中的第一帧中插入一个关键帧,在编辑区中画一个飞机图形,也可以插入一个飞机矢量图。第一帧的帧动作为“stop()”。在第二帧处插入空白关键帧,画上一个矩形,矩形要比战斗机小很多。然后在第六帧中插入空白关键帧,画一个爆炸图形,在属性面板设置第二帧到第六帧的补间动作为“形状”,第六帧的帧动作为“gotoAndPlay(1)”。3新建一个MC元件“fire”,第一帧是一个空白关键帧,第二帧插入一个关键帧,画一个椭圆作为“plane”发出的用来射击的炮弹,帧动作为“stop()”。4新建一个MC元件“bullet”,把“fire”剪辑拖入编辑区中央,剪辑名称为“fire”,帧动作“stop(
2、)”。该剪辑编辑好后,在影片库中会出现其选项,用鼠标右击“bullet”选项,在弹出的快捷菜单中选择“链接”,标识符为“laser”,并勾选“为动作脚本输出”。这是关键步骤,因为要用attachmovie调用库剪辑进行复制,如果没有这一步,attachmovie就无法中库中复制出剪辑,游戏运行时“plane”也将无法发出炮弹射击。然后在bullet剪辑中给“fire”设置动作代码:onClipEvent (load) /载入时发生动作 n=_root.enemyNumber;/画面中的敌人飞机数量赋值给n speed=10/speed初始值为0 onClipEvent (enterFrame)
3、 /进入帧时发生 for(i=0;in;i+) if(_rootnew+i.ship1._currentframe=1) /画面中的敌机是不是在其首帧 if(this.hitTest(_root+i) /判断该剪辑是不是与画面中复制出的敌机交迭 _root.score+=10 /如果交迭,生命值加10 _root+i.ship1.gotoAndPlay(2); /敌机爆炸 removeMovieClip (_parent) ;/从场景中删除剪辑 if (_parent._x=500) /如果c的值(得分)大于500,则胜利结束游戏 _root.gotoAndStop(2); if(_root.
4、life=0) /如果生命值小于0,则重新开始游戏或退出 _root.gotoAndStop(1); /当玩家按下上、下、左、右方向键时,飞机可以移动 if (Key.isDown(Key.down)and _y0) _y -= speed; sy-=speed if (Key.isDown(Key. right) and _X0) _x -= speed; if (Key.isDown(Key.space) /当按下空格键时,飞机开火,用了一个变量a, /使每按一下空格发出一发炮弹,如果不设置这个变量,那么当按下空格键时,炮弹将连续飞出。 if (!a) /如果a为false shotCou
5、nt+; depth=(shotCount%100)+100; _root.attachMovie(lasersparo+shotCount,depth); /attachmovie方法是从库中直接调用复制影片剪辑“fire”,它的标识符为“laser”。+shotCount._x = this._x+(_width-45)+shotCount._y = this._y; /复制出的“fire”剪辑的初试位置。 a = true; else a = false;7右击“enemy”剪辑,在“动作”面板里设置代码onClipEvent (load) sy=random (400)+10; /取随
6、机数 function reset() ship1.gotoAndStop(1); speed=random(10)+2; /敌机的飞行速度是一个随机数 _y= random(300)+_height; /敌机的初始y坐标取随机数 _x= 550+_y; _root.firePower=100 ; reset() if(this.ship1._currentframe=1) /敌机剪辑在第一帧 _y = sy + speed * Math.cos(speed+=0.032); /敌机飞行时有浮动的效果 if(this.hitTest(_root.ship) /如果该剪辑与战斗机相撞 ship1
7、.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); /炮弹的初始坐标就是敌机当前所在位置的坐标+Count._x=this._x-40+Count._y=this._y _x-=speedif(_x-10) reset()8右击“ball”剪辑,在“动作”面板里设置代码 speed=15; if(!_root.shipDead) /如果战斗机的生命值大于0 if(this.hitTest(_root.ship) /敌机发出的炮弹击中战斗机 _root.life-=5; /生命值减5 removeMovieClip (this) _x-=speed; if(_x-10 )removeMovieClip(this)四、总结至此,整个游戏就全部完成了。在以上过程中,为了讲解尽可能的简洁,我没有讲述插入音效的过程,实际上插入的方法也是很简单的,只要把合适的声音放到合适的帧中就可以了。 (注:可编辑下载,若有不当之处,请指正,谢谢!)