Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 画布请求动画帧暂停_Javascript_Html_Canvas - Fatal编程技术网

Javascript 画布请求动画帧暂停

Javascript 画布请求动画帧暂停,javascript,html,canvas,Javascript,Html,Canvas,如何暂停使用requestAnimationFrame制作的画布动画? 我这样开始动画: 代码: 现在我想在按下键后添加暂停选项。有什么简单的方法吗?您可以创建一个变量来存储动画的状态:暂停或未暂停。每次单击按钮时更改该状态。像这样的方法应该会奏效: var isPaused = false; window.requestAnimFrame = (function() { return window.requestAnimationFrame ||

如何暂停使用requestAnimationFrame制作的画布动画? 我这样开始动画:

代码:


现在我想在按下键后添加暂停选项。有什么简单的方法吗?

您可以创建一个变量来存储动画的状态:暂停或未暂停。每次单击按钮时更改该状态。像这样的方法应该会奏效:

var isPaused = false;

window.requestAnimFrame = (function() {
    return  window.requestAnimationFrame       ||
            window.webkitRequestAnimationFrame ||
            window.mozRequestAnimationFrame    ||
            function(callback) {
                window.setTimeout(callback, 1000 / 60);
            };
})();

function Start() {
    if (isPaused) {
        Update();
    }

    requestAnimFrame(Start);
}

window.onkeydown = function() {
    isPaused = !isPaused; // flips the pause state
};

Start();

Ivan Chub解决方案可以工作,但浏览器将继续调用requestAnimationFrame回调。要避免这种行为,请改用。请参阅发布的RealSimultFraskPrimultPult填充。不应该在<代码> UpDebug()/<代码>中调用<代码>请求动画框架>代码>。否则,您调用的函数除了调用另一个函数之外什么都不做。Update()函数做什么?这个问题在这里没有得到真正的回答。这个函数有什么特别的地方我们应该知道吗?
var isPaused = false;

window.requestAnimFrame = (function() {
    return  window.requestAnimationFrame       ||
            window.webkitRequestAnimationFrame ||
            window.mozRequestAnimationFrame    ||
            function(callback) {
                window.setTimeout(callback, 1000 / 60);
            };
})();

function Start() {
    if (isPaused) {
        Update();
    }

    requestAnimFrame(Start);
}

window.onkeydown = function() {
    isPaused = !isPaused; // flips the pause state
};

Start();