requestAnimationFrame中的javascript作用域
我想为动画制作一个选择选项,这样无论选择什么类型,它都会显示在画布上。 因此,我将每个动画制作为一个“类”: 然后在主js中:requestAnimationFrame中的javascript作用域,javascript,scope,requestanimationframe,Javascript,Scope,Requestanimationframe,我想为动画制作一个选择选项,这样无论选择什么类型,它都会显示在画布上。 因此,我将每个动画制作为一个“类”: 然后在主js中: var a = new animationA(); function setup() { a.init(); } function update(callback) { requestAnimationFrame(function () { update(callback); }); console.log(t
var a = new animationA();
function setup() {
a.init();
}
function update(callback) {
requestAnimationFrame(function () {
update(callback);
});
console.log(this);
callback();
}
setup();
update(a.draw);
我发现更新(a.draw)中出现错误。它无法访问此行代码中的属性。
我想知道这是否是javascript作用域问题
谢谢。在调用requestAnimationFrame之前,您需要创建一个对回调中要引用的上下文的引用,就像在普通事件回调中一样
Var that = this;
requestAnimationFrame(function(){
that.doSimething();
});
这与您使用的
requestAnimationFrame
函数无关。它是关于如何将a.draw传递给update
的,它不是函数的范围,而是函数调用的上下文。什么是RequestAnimationFrame
?什么是此
?requestAnimationFrame是一个在浏览器根据图形卡的刷新率更新屏幕时执行的函数。由于大多数显示器的工作频率为60Hz,因此该功能每16.6666ms启动一次。回调函数在函数激发时执行。由于屏幕实际刷新时会有变化,所以requestAnimationFrame并不总是16.6666ms,因此requestAnimationFrame比执行setInterval或setTimeout函数要高效得多。哦,这个函数称为requestAnimationFrame
。谢谢你的更新!
Var that = this;
requestAnimationFrame(function(){
that.doSimething();
});