我正在尝试在请求动画框架函数内更新全局值,并获取更新后的值。我该怎么做呢

var flyPos;

function drawFrame() {
 window.requestAnimationFrame(drawFrame);
 transX = Math.sin(angleX) * range;
 transY = Math.sin(angleY) * range;
 fly.style.transform = `translate3d(${transX}px,${transY}px,0)`
 angleX += xspeed;
 angleY += yspeed;
 flyPos = fly.getBoundingClientRect();
 return flyPos;


/ *我认为这是范围问题* /
}

window.requestAnimationFrame(drawFrame);

console.log(flyPos);


每次运行动画帧时,它应该看起来飞行的位置

最佳答案

/ *我认为这是范围问题* /


这不是范围问题。这是一个时间问题。在传递给flyPos的回调运行之前,不会设置rAF,该回调将在console.log之后。

如果要在每次运行rAF回调时记录飞行的位置,则将console.log放在回调中。

08-08 07:21