我开始学习这种方法requestAnimationFrame
,但我发现它有点难以理解(至少对我而言是如此)。我知道setInterval / setTimeout的工作方式,但是当我尝试输入一些简单的代码进行测试时:
function message(){console.log('hello');}
requestAnimationFrame(message);
这不会在控制台中产生任何动画,而问候消息只会出现一次,但是当我在消息函数中调用
requestAnmiationFrame(message)
时,循环是无限的(因此它可以正常工作)。但是以另一种方式,我可以使用setInterval / setTimeout在任何地方调用此消息函数,而不必放在消息函数内部。
所以我可以理解
requestAnimationFrame()
方法必须在函数内部运行吗?还是我应该说有一个函数具有默认的for循环,当在其中使用requestAnimiationFrame()
方法时,它会循环自己的无穷大时间?这个问题可能很愚蠢,但真的希望有人能启发我。
最佳答案
requestAnimationFrame实际上并没有为您渲染任何内容,它只是将浏览器的渲染循环同步到您的代码,因此您可以使用它来以编程方式在屏幕上渲染动画。
它的作用是在浏览器每次渲染框架时触发您提供的回调函数。这是一个很好的例子:制作一个javascript game
关于javascript - requestAnimationFrame感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43745088/