Actionscript 3 平台游戏。在下一帧中跳到下一个级别

Actionscript 3 平台游戏。在下一帧中跳到下一个级别,actionscript-3,Actionscript 3,我为android设备创建了一个20级的平台游戏。每个关卡都有不同的步行平台和不同属性的新敌人。 我有20个按钮的第一帧,第一个按钮转到第一层(第2帧),第二个按钮转到第二层(第3帧),一直到第21帧的最后一层。 我把我所有的代码都写在第2帧(1级)中,玩家的移动,敌人的属性,硬币,生命等等。 当玩家死亡或玩家完成第二阶段时,我进入第1帧,我准备点击第2级按钮,进入第3帧的第二阶段。 那么,我的代码的哪一部分必须转移到第二级 这是我在第二帧中的部分代码。 (我只显示一个敌人(medouza)和我

我为android设备创建了一个20级的平台游戏。每个关卡都有不同的步行平台和不同属性的新敌人。 我有20个按钮的第一帧,第一个按钮转到第一层(第2帧),第二个按钮转到第二层(第3帧),一直到第21帧的最后一层。 我把我所有的代码都写在第2帧(1级)中,玩家的移动,敌人的属性,硬币,生命等等。 当玩家死亡或玩家完成第二阶段时,我进入第1帧,我准备点击第2级按钮,进入第3帧的第二阶段。 那么,我的代码的哪一部分必须转移到第二级

这是我在第二帧中的部分代码。 (我只显示一个敌人(medouza)和我移动玩家的控制,因为这是一个大代码)

stop();
l_btn.addEventListener(TouchEvent.TOUCH_BEGIN,lbtisdown);
l_btn.addEventListener(TouchEvent.TOUCH_END,lbtisup);
r_btn.addEventListener(TouchEvent.TOUCH_BEGIN,rbtisdown);
r_btn.addEventListener(TouchEvent.TOUCH_END,rbtisup);
j_btn.addEventListener(TouchEvent.TOUCH_BEGIN,jbtisdown);
k_btn.addEventListener(TouchEvent.TOUCH_BEGIN,kbtisdown);
停止btns.addEventListener(TouchEvent.TOUCH\u END,allup);
stop1_btn.addEventListener(TouchEvent.TOUCH_END,jkup);
fire_btn.addEventListener(触摸事件。触摸开始,FBTISTOWN);
功能LBTISTOWN(e:触地事件)
{
ldown=true;
}
功能lbtisup(e:TouchEvent)
{
ldown=false;
}
功能RBTISTOWN(e:触地事件)
{
rdown=真;
}
功能rbtisup(e:TouchEvent)
{
rdown=假;
}
功能KBTISTOWN(e:触碰事件)
{
kdown=true;
}
功能jbtistown(e:TouchEvent)
{
如果(!jdown&&onground&&dizbl)
{
runJump();
}
jdown=true;
}
功能FBTISTOWN(e:触地事件)
{
fdown=true;
}
var movers=新阵列(背景地面平台0、背景地面平台0、背景地面平台1、背景地面平台1、背景地面平台1、背景地面平台2、背景地面平台3);
var movedirs=新数组(0,1,0,1,1,1);
var movelimits=新数组([-57.5,60]、[18532021]、-57.5243]、[19352072]、[25482877]、[29823073]);
var medouzaArr=新数组();
函数addMedouza(med)
{
medouzaArr.推(med);
medouza.gotoAndStop医学院(1);
med.xvel=0;
med.yvel=0;
平均生命值=20;
med.startAttack=0;
中度火焰攻击=3;
med.sp=Math.random()*.7+.7;
med.dir=Math.floor(Math.random()*2);
med.locksp=med.sp;
}
this.addEventListener(Event.ENTER_FRAME,FramesEvents);
功能框架组件(e:事件)
{
完成测试();
移动平台();
moveMedouza();
phys();
控件();
windowcamera();
}
函数moveMedouza()
{
对于(变量k1=0;k1 savvito.x)
{
m、 scaleX=-1;
}
if(m.x4)
{
m、 fireAttack=1+Math.floor(Math.random()*2);
m、 startAttack=0;
}
如果(m.fireAttack==0)
{
m、 medouza.gotoAndStop(1);
}
如果(m.fireAttack==1)
{
m、 medouza.gotoAndStop(2);
}
如果(m.fireAttack==2)
{
m、 medouza.gotoAndStop(3);
}
如果(m.medouza.currentFrame==1和&m.medouza.medouza_iddle.currentFrame==m.medouza.medouza_iddle.totalFrames)
{
m、 StartTack+=1;
}
如果(m.medouza.currentFrame==2和&m.medouza.medouza_jump.currentFrame==m.medouza.medouza_jump.totalFrames)
{
m、 fireAttack=0;
var e=bg.addChild(new-enemy1());
e、 x=m.x;
e、 y=m.y;
}
if(m.medouza.currentFrame==3和&m.medouza.medouza_-attack.currentFrame==m.medouza.medouza_-attack.totalFrames)
{
m、 fireAttack=0;
}
if(m.medouza.currentFrame==3和&m.medouza.medouza_attack.currentFrame==12)
{
var s=bg.addChild(newparentsmos());
smoshArr.推(s);
s、 x=m.x;
s、 y=m.y;
如果(m.scaleX==1)
{
s、 scaleX=1;
}
如果(m.scaleX==-1)
{
s、 scaleX=-1;
}
}
if(savvito.hitTestObject(m.med_hit)&!savvito.hit&!die)
{
herohitpoints++;
savvito.hit=true;
savvito.hitcv=0;
if(savvito.x对于(var rk1=0;rk1 5&&herohitpoints,我将把所有游戏代码放在第1帧上

在第1帧上制作一个名为levelsMC的新MovieClip,它是所有级别帧的容器(使用舞台时间线中的“剪切帧”并将其粘贴到级别MC时间线中)

现在,您的代码可以只对level 2=
levelsMC.gotoAndStop(2);
或level 3
levelsMC.gotoAndStop(3);

因为代码级别SMC都在第1帧上,所以您不必传输(重新复制)任何代码

您的工作逻辑是:

我有一个按钮(levelButton)的第一帧

  • 我有一个具有帧编号的变量nextLevel(整数)。我更新为
    nextLevel=2;
  • 第一个按钮告诉levelsMC转到第一级(使用
    levelsMC.gotoAndStop(2);
    )或可以使用
    levelsMC.gotoAndStop(下一级);
  • 第二个按钮转到第二级(使用
    levelsMC.gotoAndStop(3);
  • 并一直持续到第21帧中的最后一级(
    levelsMC.gotoAndStop(21);

  • 我将所有代码都写在第1帧中,为了从第1级开始显示,我说:
    startscreemc.visible=false;
    levelsMC.visible=true;

  • 当玩家完成第一阶段更新nex时
     stop();
        l_btn.addEventListener(TouchEvent.TOUCH_BEGIN,lbtisdown);
        l_btn.addEventListener(TouchEvent.TOUCH_END,lbtisup);
        r_btn.addEventListener(TouchEvent.TOUCH_BEGIN,rbtisdown);
        r_btn.addEventListener(TouchEvent.TOUCH_END,rbtisup);
        j_btn.addEventListener(TouchEvent.TOUCH_BEGIN,jbtisdown);
        k_btn.addEventListener(TouchEvent.TOUCH_BEGIN,kbtisdown);
        stop_btns.addEventListener(TouchEvent.TOUCH_END,allup);
        stop1_btn.addEventListener(TouchEvent.TOUCH_END,jkup);
        fire_btn.addEventListener(TouchEvent.TOUCH_BEGIN,fbtisdown);
    function lbtisdown(e:TouchEvent)
    {
      ldown = true;
    }
    function lbtisup(e:TouchEvent)
    {
      ldown = false;
    }
    function rbtisdown(e:TouchEvent)
    {
      rdown = true;
    }
    function rbtisup(e:TouchEvent)
    {
      rdown = false;
    }
    function kbtisdown(e:TouchEvent)
    {
      kdown = true;
    }
    function jbtisdown(e:TouchEvent)
    {
      if (! jdown && onground && ! dizbl)
      {
      runJump();
      }
      jdown = true;
    }
    function fbtisdown(e:TouchEvent)
    {
      fdown = true;
    }
    var movers = new Array(bg.ground.platkat0,bg.ground.plator0,bg.ground.platkat1,bg.ground.plator1,bg.ground .plator2,bg.ground.plator3);
    var movedirs = new Array(0,1,0,1,1,1);
    var movelimits = new Array([-57.5,60],[1853,2021],[-57.5,243],[1935,2072],[2548,2877],[2982,3073]);
    var medouzaArr = new Array();
    function addMedouza(med)
    {
      medouzaArr.push(med);
      med.medouza.gotoAndStop(1);
      med.xvel = 0;
      med.yvel = 0;
      med.hitpoints = 20;
      med.startAttack = 0;
      med.fireAttack = 3;
      med.sp = Math.random() * .7 + .7;
      med.dir = Math.floor(Math.random() * 2);
      med.locksp = med.sp;
    }
    this.addEventListener(Event.ENTER_FRAME,FramesEvents);
    function FramesEvents(e:Event)
    {
      completeStage();
      moveplatforms();
      moveMedouza();
      phys();
      controls();
      windowcamera();
    }
    function moveMedouza()
    {
      for (var k1=0; k1<medouzaArr.length; k1++)
      {
      var m = medouzaArr[k1];
      m.x +=  m.xvel;
      m.xvel *=  .3;
      m.y +=  m.yvel;
      m.yvel +=  GRA;
      if (m.x > savvito.x)
      {
      m.scaleX = -1;
      }
      if (m.x < savvito.x)
      {
      m.scaleX = 1;
      }
      if (m.startAttack > 4)
      {
      m.fireAttack = 1 + Math.floor(Math.random() * 2);
      m.startAttack = 0;
      }
      if (m.fireAttack == 0)
      {
      m.medouza.gotoAndStop(1);
      }
      if (m.fireAttack == 1)
      {
      m.medouza.gotoAndStop(2);
      }
      if (m.fireAttack == 2)
      {
      m.medouza.gotoAndStop(3);
      }
      if (m.medouza.currentFrame == 1 && m.medouza.medouza_iddle.currentFrame == m.medouza.medouza_iddle.totalFrames)
      {
      m.startAttack +=  1;
      }
      if (m.medouza.currentFrame == 2 && m.medouza.medouza_jump.currentFrame == m.medouza.medouza_jump.totalFrames)
      {
      m.fireAttack = 0;
      var e = bg.addChild(new enemy1());
      e.x = m.x;
      e.y = m.y;
      }
      if (m.medouza.currentFrame == 3 && m.medouza.medouza_attack.currentFrame == m.medouza.medouza_attack.totalFrames)
      {
      m.fireAttack = 0;
      }
      if (m.medouza.currentFrame == 3 && m.medouza.medouza_attack.currentFrame == 12)
      {
      var s = bg.addChild(new parentsmos());
      smoshArr.push(s);
      s.x = m.x;
      s.y = m.y;
      if (m.scaleX == 1)
      {
      s.scaleX = 1;
      }
      if (m.scaleX == -1)
      {
      s.scaleX = -1;
      }
      }
      if (savvito.hitTestObject(m.med_hit) && ! savvito.hit && ! die)
      {
      herohitpoints++;
      savvito.hit = true;
      savvito.hitcv = 0;
      if (savvito.x < m.x)
      {
      xvel = -8;
      }
      else
      {
      xvel = +8;
      }
      yvel = -6;
      }
      if (savvito.hero.currentFrame == 4 && savvito.hero.attack.hitTestObject(m.med_box) && savvito.hero.attack.currentFrame == 6)
      {
      m.hitpoints -=  15 + KnifeDamage;
      enemieslifebar.enemiesgreenlife.gotoAndStop(m.hitpoints);
      if (m.scaleX == 1)
      {
      m.x = 700;
      }
      if (m.scaleX == -1)
      {
      m.x = 100;
      }
      }
      upPushMedouza(m);
      if (m.hitpoints <= 0)
      {
      addBonusCoins();
      bg.stageClear.x = m.x;
      bg.stageClear.y = m.y + 7;
      medouzaArr.splice(k1,1);
      bg.removeChild(m);
      return;
      }
      }
    }
    function completeStage()
    {
      if (savvito.hitTestObject(bg.stageClear)&&numKey >= 5)
      {
      j_btn.removeEventListener(TouchEvent.TOUCH_BEGIN,jbtisdown);
      stageDone.gotoAndStop(2);
      kdown = false;
      ldown = false;
      rdown = false;
      jdown = false;
      dizbl = false;
      for (var rk1=0; rk1<medouzaArr.length; rk1++)
      {
      var rm = medouzaArr[rk1];
      medouzaArr.splice(rk1,1);
      bg.removeChild(rm);
      return;
      }
      if (medouzaArr.length == 0)
      {
      goto2();
      }
      fl_CountDownTimerInstance.removeEventListener(TimerEvent.TIMER, fl_CountDownTimerHandler);
      fl_CountDownTimerInstance.stop();
      fl_Countstart.removeEventListener(TimerEvent.TIMER, fl_CountDownstart);
      }
    }
    function goto2()
    {
      medouzaArr.length = 0;
      movers.length = 0;
      movedirs.length = 0;
      movelimits.length = 0;
      fl_TimerInstancew.start();
      if (fl_SecondsElapsedw > 5 && herohitpoints <= 29)
      {
      channel1.stop();
      this.addEventListener(Event.ENTER_FRAME,empty1);
      fl_TimerInstancew.removeEventListener(TimerEvent.TIMER, fl_TimerHandlerw);
      fl_TimerInstancew.stop();
      }
      if (fl_SecondsElapsedw == 3 && herohitpoints < 29)
      {
      savecoins.data.banksavecoins = coinscount + buycoins;
      savecoins.flush();
      }
    }
    function empty1(e:Event)
    {
      this.removeEventListener(Event.ENTER_FRAME,FramesEvents);
      gotoAndStop(2);
    }