requestAnimationFrame检测停止

时间:2012-10-30 05:54:32

标签: javascript requestanimationframe

我注意到,每当我停靠浏览器窗口或切换标签时,requestAnimationFrame都会停止被调用(我预计会发生这种情况)。

有没有办法检测何时发生这种停止?

原因是,我的游戏中有一个计时器。我想在requestAnimationFrame不再呈现时停止计时器。

我查看了'window.blur'和'window.focus'事件,但这些与requestAnimationFrame停止和启动时无关(例如,当您在浏览器窗口外单击window.blur事件时但requestAnimationFrame一直在运行。

我想在requestAnimationFrame启动和停止时订阅。你知道吗?

2 个答案:

答案 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);
});

需要更多信息?请问。