我想构建一个我正在研究的(THREEjs)项目
class Blah
scene : new THREE.Scene()
renderer : new THREE.WebGLRenderer()
camera : new THREE.PerspectiveCamera()
render : ( renderables )->
renderables.forEach ( renderable )->
renderable()
@renderer.render( @scene, @camera )
foo = new Blah()
animateMovie =->
requestAnimationFrame( animateMovie )
foo.render([baz.update, bar.update])
render
方法需要更新一系列函数。在animateMovie
内部有一个循环(使用requestAnimationFrame
递归调用)会导致堆栈溢出,并且在执行此类操作时会出现性能问题。
答案 0 :(得分:0)
requestAnimationFrame()
方法告诉浏览器在下一次重绘发生之前立即运行回调函数。
在使用JavaScript制作动画并重复UI更新时,此功能特别有用。由于它与浏览器的重绘时间有关,因此与使用setInterval()
requestAnimationFrame()
方法仅运行一次。您可以使用一种称为递归的技术使其反复循环。