我正在为肉桂开发一个基于 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 屏幕保护程序。