当前位置: 首页 > 图文教程 > Flash动画 > Flash动画制作 > Flash制作空战游戏(3)

Flash动画制作
巧用超级解霸在Flash V5.0中插入录像
教你用Flash MX来制作简单的课件界面
Flash MX 2004 ActionScript图文教程(二)
Flash MX 2004 ActionScript图文教程(三)
Flash MX 2004 ActionScript图文教程(四)
Flash MX 2004 ActionScript图文教程(五)
Flash MX 2004 ActionScript图文教程(六)
flash场景之间相互跳转的实现方法
Flash本地加密
FLASH -- 关于变量的问题FLASH -- 关于变量的问题
Flash5 画任意直线教程
Flash MX 视频导入功能详解
制作飞舞的蝴蝶
Flash MX 2004 ActionScript图文教程(七)
Flash MX 2004 ActionScript图文教程(八)
Flash MX 2004 ActionScript图文教程(九)
Flash MX 2004 ActionScript图文教程(十)
Flash教程 飞翔的文字
Flash MX 2004 ActionScript图文教程(十一)
制作Flash网站技巧拾零

Flash动画制作 中的 Flash制作空战游戏(3)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-22   浏览: 33 ::
收藏到网摘: n/a

、代码控制

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

  function clean() {
     for (i in _root) {
         _root[i].removeMovieClip();
     }
  }
   _root.clean();
   stop();

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

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

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

  “exit”按钮的动作脚本为

   on (release) { //释放鼠标时,退出游戏
         fscommand("quit", "1");
   }

  3.添加第二层,命名为“victor”,在该层第二帧中插入关键帧,在场景中用文字工具写入“you win”,设置字号为84,颜色为黄色。也插入“start”和“exit”按钮,动作脚本同上。

  4.添加第三层,命名为“action”,在该层第三帧插入关键帧,写入代码如下:

  enemyNumber=5  //每次画面中出现五个敌人
    for(i=0;i<enemyNumber;i++) { //如果画面中敌人数小于五,则复制出敌人的影片剪辑
     duplicateMovieClip("enemy","new"+i,30+i)
   } 
  life=100   //生命值为100
  score=0;   //开始得分为 0
  stop( );

  5.在该帧场景中添加两个静态文本框和两个动态文本框,用来表示生命值和得分。静态文本框内的内容分别是“生命”和“得分”,第一个动态文本框命变量值为life,第二个动态文本框的变量值为score。

  6.再增加两个图层,一个命名为 “plane”,一个命名为“enemy”,并分别在第三帧插入关键帧。选中“plane”层的第三帧,把“plane”拖入,剪辑名称为“ship”。选中“enemy”层的第三帧,把“enemy”和“ball”剪辑拖入,剪辑名称分别为“enemy”和“enemylaser”。

  右击“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){       //如果生命值小于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["sparo"+shotCount]._x = this._x+(_width-45)
         _root["sparo"+shotCount]._y = this._y;  //复制出的“fire”剪辑的初试位置。         a = true;

        }
      } else {a = false;}
   } 

  7.右击“enemy”剪辑,在“动作”面板里设置代码

  onClipEvent (load) {  
     sy=random (400)+10; //取随机数
     function reset(){
       ship1.gotoAndStop(1);
       speed=random(10)+2; //敌机的飞行速度是一