问题标签 [cancelanimationframe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
132 浏览

javascript - 如何使用 requestAnimationFrame 暂停和取消暂停

所以,我在弄清楚如何暂停和(最重要的是)取消暂停我的模拟时遇到了问题。当我按下播放键时,我调用了一个名为 animate() 的函数。我只调用一次,所以在animate()内部我很自然地调用requestAnimationFrame(animate)让它像往常一样循环:

请注意,我将返回归因于idAnimate,因此我可以在需要的任何地方将其用作cancelAnimationFrame(idAnimate)的参数。我的问题是,一旦我能够停止动画,我就无法将其取消暂停。我已经搜索了替代方案,例如使用诸如isPaused 之类的布尔变量,并且仅在isPaused为假时调用requestAnimationFrame,但据我所知,当isPaused 变为真时,动画循环停止并且它无法再测试它是否为真。我只调用一次animate(),所以一旦它退出循环,它就不再进入它。无论我如何暂停它(通过使isPausedtrue 或从外部调用cancelAnimationFrame(idAnimate)),我似乎无法让它回去。

我很想对此有所了解。我希望我能把自己说清楚。先感谢您!:)

0 投票
0 回答
39 浏览

javascript - cancelAnimationFrame 和 setTimeout

对于以下js代码:

由于作用域,以下代码无法停止动画:

有什么建议吗?

0 投票
0 回答
24 浏览

javascript - Recoil.js 使用recoilState 控制animationFrame 时的奇怪行为

https://codesandbox.io/s/heuristic-moon-8l3g6?file=/src/App.js

上面演示中的切换按钮将暂停/恢复计数器几次,然后它会突然停止运行并且animationFrame永远不会停止。如果我要注释掉useRecoilState并取消注释useState,它会再次按预期工作。这是否与获取值时引入延迟的后坐力有关?