javascript - requestAnimationFrame 循环是如何工作的?

标签 javascript three.js

我仍在学习 javascript 和 Three.js,我无法理解 requestAnimationFrame 函数的工作原理。有人可以向我解释以下代码如何处理简单的单词吗?

(您可以查看完整代码 on jsfiddle )

  // loop function
  function render(time) {
    time *= 0.001;  // convert time to seconds

    cube.rotation.x = time;
    cube.rotation.y = time;

    // render our scene
    renderer.render(scene, camera);

    requestAnimationFrame(render);
  }
  requestAnimationFrame(render);

最佳答案

requestAnimationFrame() 到达浏览器并要求它在重绘完成之前执行一个函数。

requestAnimationFrame docs

代码:

  function render(time) {    
    time *= 0.001;  // convert time to seconds

    cube.rotation.x = time;
    cube.rotation.y = time;

    // render our scene
    renderer.render(scene, camera);

    requestAnimationFrame(render);
  }
  requestAnimationFrame(render);
  • 你设置了一个时间变量,它会在每次调用 render() 时改变值
  • 您将立方体旋转 x 和 y 值设置为时间变量
  • 您使用更新后的属性渲染场景
  • 您调用 requestAnimationFrame 在渲染函数中传入渲染。这会导致一个循环,该循环将使用更新后的坐标不断地在屏幕上重新绘制立方体。
  • 您调用 requestAnimationFrame 在渲染函数之外传入渲染函数,以对立方体进行初始渲染

关于javascript - requestAnimationFrame 循环是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58685093/

相关文章:

javascript - ThreeJS如何添加交互性,

javascript - 如何在 three.js 中创建地形?

Javascript 动画问题 - 过渡不工作

Javascript 使用 JCanvaScript 在 Canvas 中加载图像

three.js - 未捕获的类型错误 : Cannot read property 'push' of undefined in three. js

javascript - Substance Painter PBR金属 Material 在A Frame中显示黑色

javascript - 如何提取textarea值中#和空格之间的值

javascript - Angular -sweetalert + browserify : how to install/require/inject?

javascript - IoT/WinJS/VS - 无法创建 Web 诊断对象

javascript - 旋转后的3D坐标