好的,我找到了解决方案。来自 kha 的 SystemImpl 正在请求 requestAnimationFrame 并在每个时间戳检查它是否为空。
var window: Dynamic = Browser.window;
if (requestAnimationFrame == null) window.setTimeout(animate, 1000.0 / 60.0);
else requestAnimationFrame(animate);
在非活动选项卡期间,requestAnimationFrame 不为空,但不调用 animate 函数。我添加了一个静态布尔值 isFocused,每次浏览器关闭或打开此窗口时都会更改该值。
为了解决这个问题,我暂时将这个小片段修改为:
var window = Browser.window;
window.onfocus = function(){isFocused = true;}
window.onblur = function()
{
window.setTimeout(animate, 1000.0 / 60.0);
isFocused = false;
}
if (requestAnimationFrame == null || !isFocused) window.setTimeout(animate, 1000.0 / 60.0);
else requestAnimationFrame(animate);
这样,我正在检查当前窗口是否是活动窗口并使用更平滑的 requestAnimationFrame,如果不是,我正在使用 setTimeout。回调方法正在设置焦点值。Blur Callback 值还确保始终在模糊时调用 animate 函数。
我将在接下来的 1 或 2 周内提出这个解决方案来抢,也许他会考虑实施