[LayaAir 2.0]requestAnimationFrame在90或120Hz刷新屏幕下的表现

Laya帧循环依赖requestAnimationFrame函数,而requestAnimationFrame刷新依赖屏幕刷新率,那在高帧率屏幕上依赖帧循环的处理不是都会被加速吗,我看引擎源码是没有对最高帧率做处理的。身边找不到高帧频手机测试,所以没有做demo测试,望大佬们解答,谢谢。
已邀请:

Laya_XS

赞同来自:

目前你遇到什么问题了吗,目前我们在高频率电脑上测试也没出现什么问题,你可以说下你觉得可能出现的问题,然后大家一起分析下问题。

liudong95

赞同来自:

在高帧屏手机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;
}
}());

要回复问题请先

商务合作
商务合作