我正在尝试在请求动画框架函数内更新全局值,并获取更新后的值。我该怎么做呢
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
放在回调中。