Flash游戏制作揭秘──飞行游戏的主机控制

IT商界

  在上一期,我们介绍了主机的控制技术,在本期,我们将继续上一篇的内容,讲解在Flash飞行游戏中,关于敌机的复制和子弹的复制技术。

  子弹以及敌机的复制,在Flash中,应用的技术是DuplicateMovieClip指令,这个指令用来对Flash影片中的影片剪辑的实例进行复制。从Flash MX版本开始,Flash中的按钮Button也拥有了影片剪辑的部分属性,并可以进行复制。

  制作思路

  整个复制技术的思路是这样的,首先,我们制作敌机的影片实例,然后为这个实例制作运动的轨道,因为飞机在飞行中,不可能是直线航行,所以,需要使用引导线方法,为敌机制作轨道。另外,在子弹的制作中,我们使用Action中的坐标控制技术,以此来让子弹实现射击轨道,因为这样的技术可以使每一颗子弹都有自己的轨道前进,不会因为主机的坐标而改变自己的坐标。

  实战

  1.打开Flashgame.fla,新建一个图层,使用线条绘制工具绘制一条黄色的竖线,位置在场景的左侧。

  2.选中这条竖线,按F8键,转换成影片剪辑,起实例名称为shot,选中子弹实例,点鼠标右键,选Action,在Aciton面板中输入代码如下:

  onClipEvent(enterFrame){

  this._y-=10

  }

  注:当影片在播放过程中,每播放一帧执行一次,本实例的Y坐标等于它的Y坐标减去10,也就是说,子弹的Y坐标会每帧前进10个坐标。

  3.在主机所在的图层,打开上一次的Action面板,继续添加如下代码:

  n=0

  fen=0

  stop()

  在_root.onenterframe=function()中添加代码如下:

  if(Key.isDown(Key.SHIFT)){

    if(n<50){

    shot.duplicatemovieclip("shot"+n,n+100)

    _root["shot"+n]._x=_root.plane._x

    _root["shot"+n]._y=_root.plane._y

    n++

    }

    if(n>=50){

      n=0

    }

  }

  注:当键盘中的Shift键按下时,N小于50时,shot实例开始复制,它的X坐标以及Y坐标等于主机的位置,当N大于等于50时,N=0。

  在影片开始播放时,只要按下Shift键,子弹的发射就开始播放,初始的位置是主机的位置,因为子弹的轨道中本身存在着循环的坐标递增,所以,就形成了子弹发射的实例。

  4.新建一个图层,绘制敌机如下图所示。选取后按F8键转换成影片剪辑,然后进入影片剪辑,再选中敌机,按F8键,转换成影片剪辑实例,使之成为一个嵌套结构的影片剪辑。

  5.为敌机增加引导层动画,如下图所示。因为我们要让敌机的飞行有一些曲线的运动,所以,引导层是必需的。双击空白区域,回到上一级影片剪辑。

  6.为敌机取实例名称为pao,在第1、2、7帧按F6键,建立关键帧,在第1帧添加代码如下:

  i=0

  max=10

  pao._visible=0

  7.在第2帧添加代码如下,在第7帧加入代码gotoandplay(2),让影片剪辑在内部形成循环。

  if(i<max){

   pao.duplicatemovieclip("pao"+i,i)

   this["pao"+i]._x=random(550)

   this["pao"+i]._y=pao._y-random(200)

   i++

  }

  if(i>=max){

   i=0

  }

  注:当i小于max时,敌机开始复制,它的X坐标等于550的随机数,它的Y坐标等于它的Y坐标减去200的随机数。当i大于等于max时,i等于0。

  8.按“Ctrl+Shift”键,测试影片效果如下图。

  在下一期,我们将讲解子弹与敌机,主机与敌机之间的碰撞关系,另外,我们还要在游戏中增加一个简易的计分系统,欢迎继续学习。关于本实例的源程序下载地址为http://wsmmt.52flash.net/flashgame.fla,通过对照源程序,相信可以让你明白游戏中的嵌套结构。