首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >phaser-framework javascript“无限循环”“浏览器崩溃”计时器

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

Stack Overflow用户
提问于 2017-11-10 23:05:56
回答 1查看 137关注 0票数 1

我称之为浏览器崩溃,但更像是一个无限循环--我不是一个javascript专家。发生的情况是,游戏快结束了,浏览器(在这个例子中是firefox)就一直在继续--更像是冻结,没有抓拍,错误消息,什么都没有。您必须完全关闭浏览器。现在,真正奇怪的是,这条线运行得非常好。这只是在网上发生的事情。关于这个的另一个奇怪的事情是(在代码中)第一次重置游戏时-这在网上和网下都能完美地工作。只是第二次。像这样:(这是其中的一部分)

代码语言:javascript
复制
function resetGame(){
  //reset game

好的,上面的工作在线和关闭,玩家被抛弃出游戏,重新开始。然后,然而;

代码语言:javascript
复制
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 online,它冻结,崩溃,无限循环,你想叫它什么都行。有人知道为什么吗?好的,我花了很多时间在这上面(做这部分工作的程序员已经消失了)。甚至回到两周前的代码,是的,它做了同样的事情-无限循环。因此,现在我想找到一种方法,在21秒计时器结束时直接“中止javascript”。我在其他帖子中遇到了一些事情,比如:

代码语言:javascript
复制
// creates a new exception type:
function FatalError(){ Error.apply(this, arguments); this.name =         "FatalError"; }
FatalError.prototype = Object.create(Error.prototype);

代码语言:javascript
复制
function javascript_abort()

但是...

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

函数(setTimer和两个setIntervals)

代码语言:javascript
复制
function clearTimer() {
    clearInterval(intervalTimer);
}

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

var maxTime = 21;//在第二个var timerEvent = null;

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

Console.log(“结束动画并添加定时器”);

还有这个

代码语言:javascript
复制
     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);
}

->和END (或应该是end)

代码语言:javascript
复制
    if(!flagGameover && !star.visible && idx_bullet < bullet_array.length)
        initBullet();
      else{
    if(flagGameover){
      console.log("GOTO GAMEOVER");
      window.location = "../endgame.html";
    }
  }
  }   

 }

那么,有没有可能在21秒结束时取消计时器,然后让玩家进入endgame.html?我没有提到相位仪console.log --可以这样做吗?任何人以前做过这样的事情,基本上都是javascript抢救操作。

EN

回答 1

Stack Overflow用户

发布于 2017-11-19 16:52:18

我发现了那是什么。

它少了一个小轮子,比如:

var callGameover = false;

还有......

代码语言:javascript
复制
   if(flagGameover){
    if(callGameover == false){ 
        callGameover = true;
         console.log("GOTO GAMEOVER");
          window.location = "endgame.html";

我不知道这是否足以导致“无限循环”,但显然是这样的。把上面的放进去,然后循环就走了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47225732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档