2017-09-23 74 views
1

我试图更新请求中的全局值动画帧函数并获取更新后的值。我怎么做这个请求中的全局变量的更新值AnimationAnimationFrame

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); 

这应该看每次飞行的动画帧的位置运行

+0

是console.log语句注销'undefined'的问题? –

+0

嗨@NicholasTower,是的,它说 –

+1

这不是一个范围界定问题。这是一个计时问题。 ''flyPos'不会被设置,直到'rAF'运行它的回调,这将在你的'console.log'之后**。如果您想每次运行'rAF'时记录飞行的位置,则将'console.log'放入回调中。当然,随着您的代码现在,回调将只运行一次。 – 2017-09-23 19:51:24

回答

2

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

这不是scopi问题。这是一个计时问题。 flyPos将不会被设置,直到您通过rAF运行的回调,这将是之后您的console.log

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