WebKit屏幕保护程序:setTimeout与requestAnimationFrame()

时间:2017-02-19 13:13:13

标签: javascript webkit screensaver cinnamon

我正在为肉桂开发基于HTML5 / JS的自定义屏幕保护程序:-D。

它会移动一些东西。与WinXP时代的默认windows-flag屏幕保护程序非常相似。 (对于任何不记得它的人:每隔几秒就会将一个微小的静态图片移动到另一个位置。)

循环的哪种方法消耗更少的资源和更少的电池电量?

requestAnimationFrame:如果页面不可见,这些循环通常会在几秒钟后自动冻结。如果屏幕进入节能模式,这将没有问题。但它的运行速度为60hz。只添加一个额外的计时器,所以每隔n个。调用代码执行(如果自上次操作后经过n秒,则再次执行...)。

var loop = function(){
  requestAnimationframe(loop);
  if (time - lasttime > 5000) {
     lasttime = time;
     blabla();
  }
};
loop();

setTimeout:即使页面不可见,这些循环也会保持运行。只有屏幕保护程序被取消时才会停止。

var loop = function(){
  setTimeout(loop, 5000);
  blabla();
};
loop();

blabla()通过更改DOM来控制动画。

示例是简化的伪代码。

在这种情况下我应该选择哪一个?

它不适用于浏览器,但适用于肉桂webkit屏幕保护程序。

0 个答案:

没有答案