Javascript 如何有效地暂停gameLoop

Javascript 如何有效地暂停gameLoop,javascript,html,Javascript,Html,我正在从头开始编写html5游戏。 我需要gameEngine中的一个方法,调用该方法时会暂停游戏循环。 有没有比使用setTimeout、setInterval更有效的方法 gameEngine.prototype.start = function () { var that = this; (function gameLoop() { that.loop(); requestAnimFrame(gameLoop, that.canvctx.ca

我正在从头开始编写html5游戏。
我需要gameEngine中的一个方法,调用该方法时会暂停游戏循环。
有没有比使用setTimeout、setInterval更有效的方法

gameEngine.prototype.start = function () {
    var that = this;
    (function gameLoop() {
        that.loop();
        requestAnimFrame(gameLoop, that.canvctx.canvas);
    })();
}

不是在使用基本上无法控制的自调用函数时,您需要一个状态机。@加缪,请您再解释一下,我不太理解您使用状态机的意思。状态机:。基本上,您可以使用许多变量来跟踪事物的当前状态,并根据该状态决定是否应该发布下一次迭代。假设您有一个名为
pause
的变量,在执行下一个requestAnimFrame之前,您会检查它的值,如果它为真,它不会继续运行。@jfriend00但问题是如何暂停它。在调用requestAnimFrame之前,您会检查是否设置了pause变量。如果是,则不调用requestAnimFrame,因此它会暂停。