Мой вопрос связан со следующим:JavaScript - 'это' внутри SetTimeout и requestAnimationFrame
setTimeout() inside JavaScript Class using “this”
calling a function inside setTimeout and inside a function
Я пытаюсь реализовать простой цикл анимации. Функция draw является функцией-членом объекта состояния. У меня возникают проблемы с тем, чтобы «это» работать в рамках setTimeout и requestAnimationFrame.
У меня есть следующий код:
ANIM.State.prototype = {
constructor: ANIM.State,
play: function(){
if(!this.paused){
var that = this;
setTimeout(function(){
requestAnimationFrame(that.play);
that.setFrameNum(that.currentFrame + 1); //draw code is in here
}, 1000/24);
}
}
};
Однако, когда я называю игру(), она работает в два раза и останавливается.
Есть ли лучший способ сделать это? Я действительно хотел бы сохранить эту функцию как функцию класса, а не глобальную, если это возможно.