javascript - 在 requestAnimationFrame() 中重置“时间戳”的值?
问题描述
我目前正在制作一个幻灯片,它会在 10 秒后翻转幻灯片,并使用 requestAnimationFrame 来做到这一点。
但是,我在时间戳方面遇到了一些问题。我想跟踪时间戳值(这没问题),当它达到超过 10000(10 秒)的值时,将时间戳重置为 0 并继续。但是,当我尝试更改时间戳的值时,什么也没有发生。假设它是一个常量?每次调用时都将变量设置为 performance.now() 的行为也不像我预期的那样。
想知道这个问题的最佳解决方法是什么,也许使用 performance.now()?谢谢!
解决方案
当循环开始时,存储对它开始时间的引用。然后更新该变量,而不是尝试修改时间戳。
let start = null;
let loop = (timestamp) => {
if (!start) {
start = timestamp;
};
const progress = timestamp - start;
if (progress > 10000) {
console.log('loop', start);
start = timestamp;
}
requestAnimationFrame(loop)
};
requestAnimationFrame(loop);
推荐阅读
- angular - ngx-socket-io fromEvent 不能以角度工作
- javascript - “针对不同的模式版本编译”错误
- linux - 如何删除apache默认页面
- javascript - 跨域请求被阻止:同源策略不允许在 `localhost:...` 读取远程资源 - ExpressJS 和 npm Cors
- postgresql - Pg admin 4:MAC OS 上用户“postgres”的身份验证失败
- javascript - 未捕获的 TypeError:this.testFunction 不是函数
- r - 从工作区文件恢复以前的 R 代码
- c++ - 我应该使用 2 个 VBO 进行实例化吗?
- mathjax - 如何使用 Arithmatex 和 MathJax 获取 MkDocs 以将 \\[ ... \\] 识别为显示数学分隔符?
- python - 为什么单击功能在页面上不起作用,但在控制台上起作用?