phaser-framework javascript“无限循环”“浏览器崩溃”计时器

时间:2017-11-10 15:05:56

标签: javascript infinite-loop phaser-framework

我称这是一个浏览器崩溃,但更像是一个无限循环 - 我几乎不是一个JavaScript专家。发生的事情是游戏到达终点,浏览器(在这种情况下是firefox)只是继续下去 - 更像是冻结,没有快照,错误信息,没有任何东西。您必须完全关闭浏览器。现在真正奇怪的是这个完美无缺 - 离线。这只是在线发生的。关于这一点的另一个奇怪的事情是(在代码中)它第一次重置游戏 - 这也在线上和关闭都很完美。第二次。 像这样:(这是其中的一部分)

function resetGame(){
  //reset game

好的以上工作在线和关闭,玩家被淘汰出局,重新开始。然而,然而;

function moveToEndGame(){
  console.log("TIMER END");
  var twn = game.add.tween(bg).to({alpha:0},tween_speed,"Linear",true);
  twn.onComplete.addOnce(function(){flagGameover = true;},this);
}



    if(!flagGameover && !star.visible && idx_bullet < bullet_array.length)
    initBullet();
  else{
    if(flagGameover){
      console.log("GOTO GAMEOVER");
      window.location = "../endgame.html";
    }
  }
 }   

}

好的,离线它直接进入endgame.html在线,它冻结,崩溃,无限循环,无论你想要什么叫它。 任何人都知道为什么? 好吧,花了几个小时和几小时(这个部分的程序员已经消失了)。甚至在2周前回到了代码,是的,是的,它做了同样的事情 - 无限循环。 所以现在我想找到一种方法在21秒计时器结束时“中止javascript”。我从其他帖子中遇到过很多事情,例如:

// creates a new exception type:
function FatalError(){ Error.apply(this, arguments); this.name =         "FatalError"; }
FatalError.prototype = Object.create(Error.prototype);

function javascript_abort()

但是....

即使抛出异常,它也只会终止当前的事件循环。传递给setTimeout或DOM / XMLHttpRequest事件处理程序的回调仍将在他们的时间到来时运行。

或者这个:     函数(setTimer和两个setIntervals)

OR

function clearTimer() {
    clearInterval(intervalTimer);
}

无论如何,这里是代码中与21秒计时器相关的部分:

var maxTime = 21; //在SECOND var timerEvent = null;

这是添加计时器的地方(在3秒动画之后)

console.log(“完成动画和添加计时器”);

和这个

     timerEvent = game.time.events.add(Phaser.Timer.SECOND * maxTime,   moveToEndGame, this);
    },this);


function moveToEndGame(){
  console.log("TIMER END");
  var twn = game.add.tween(bg).to({alpha:0},tween_speed,"Linear",true);
  twn.onComplete.addOnce(function(){flagGameover = true;},this);
}

-----------&GT;和结束(或应该是结束)

    if(!flagGameover && !star.visible && idx_bullet < bullet_array.length)
        initBullet();
      else{
    if(flagGameover){
      console.log("GOTO GAMEOVER");
      window.location = "../endgame.html";
    }
  }
  }   

 }

所以有可能在21秒结束时杀掉计时器,其他所有东西都可以让玩家去玩endgame.html ?????????我没有提到phaser console.log - 可以这样做吗?以前任何人都会这样做,基本上是一个javascript打捞操作。

1 个答案:

答案 0 :(得分:0)

我发现它是什么。

它错过了一个callover,如:

var callGameover = false;

和......

   if(flagGameover){
    if(callGameover == false){ 
        callGameover = true;
         console.log("GOTO GAMEOVER");
          window.location = "endgame.html";

我不知道这足以导致无限循环&#34;但显然是。将上面的内容放入并循环消失!