睡眠,循环,或Javascript中的内容?

时间:2016-03-13 06:35:06

标签: javascript

我有一个游戏循环,它基本上是这样的:function game(){init();setInterval(draw, 30);}但是当玩家获胜时我想要调用Win()来清除间隔并重启。在javascript中解决这个问题的最佳方法是什么?由于setInterval()是异步的,所以此时我已经从game()中脱离出来了。所以我要添加一个繁忙的循环:function game(){while(1){init();setInterval(draw, 30);while(!Win);}}?目前sleep()没有好办法吗?有没有办法在game()内调用Win()而不制作任意大小的调用堆栈?处理这种情况的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

您可以使用命名间隔:

var time;
function game(){
     init();
     time = setInterval(function (){
          draw();
     }, 30);
}

win(){
    if(time){
        clearInterval(time); // clear the interval
        game(); // start the game again.
    }
}

现在,只要用户赢了并开始游戏,你就必须调用这个win函数。