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