在高帧屏手机90HZ或120HZ下,帧循环采用requestAnimationFrame函数确实是会让依赖帧循环的一些功能产生加速。对于依赖帧循环,或者不方便在修改成时间间隔处理的游戏,可以在laya.core.js加载之前把浏览器的requestAnimationFrame函数重写,以下处理供参考。
(function () {
var lastTimer = 0;
var rAF = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame;
window.requestAnimationFrame = rAF ? stTimeWithRAF : stTime;
function stTime(callback) {
let currTime = performance.now();
let elapseTime = Math.max(0, currTime - lastTimer);
let timeToCall = Math.max(0, 16.7 - elapseTime);
window.setTimeout(callback, timeToCall);
lastTimer = currTime + timeToCall;
}
function stTimeWithRAF(callback) {
let currTime = performance.now();
let elapseTime = Math.max(0, currTime - lastTimer);
let timeToCall = Math.max(0, 16.7 - elapseTime);
window.setTimeout(function () {
rAF(callback);
}, timeToCall);
lastTimer = currTime + timeToCall;
}
}());