我注意到,每当我停靠浏览器窗口或切换标签时,requestAnimationFrame都会停止被调用(我预计会发生这种情况)。
有没有办法检测何时发生这种停止?
原因是,我的游戏中有一个计时器。我想在requestAnimationFrame不再呈现时停止计时器。
我查看了'window.blur'和'window.focus'事件,但这些与requestAnimationFrame停止和启动时无关(例如,当您在浏览器窗口外单击window.blur事件时但requestAnimationFrame一直在运行。
我想在requestAnimationFrame启动和停止时订阅。你知道吗?
答案 0 :(得分:3)
如果您知道在正常情况requestAnimationFrame
发射,例如,至少4 Hz,您可以设置一个定时器,例如3 Hz,如果之间没有requestAnimationFrame
滴答计时器滴答,requestAnimationFrame
计时器已经停止。
答案 1 :(得分:1)
试试这个:
var timer;
if (!window.requestAnimationFrame) {
window.requestAnimationFrame = window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame;
}
requestAnimationFrame(function again() {
if (timer === "paused") {
return;
}
clearTimeout(timer);
timer = setTimeout(function () {
timer = "paused";
console.log("got ya, you closed the window");
requestAnimationFrame(function () {
timer = null;
console.log("got ya, you re-opened the window");
requestAnimationFrame(again);
});
}, 1e3);
// rest of code goes here
requestAnimationFrame(again);
});
需要更多信息?请问。