Почему window.requestAnimFrame
необходимо называть следующим образом: window.requestAnimFrame(this.__proto__.animate.bind(this));
и не нравится window.requestAnimFrame(this.__proto__.animate);
.Почему requestAnimFrame необходимо связывать (это)
Мой JS-класс выглядит следующим образом:
Game = function (moduleConfig, gameConfig) {
this.moduleConfig = moduleConfig;
this.gameConfig = gameConfig;
// Game-Commands
this.keyCommands = {
moveLeft: false,
moveRight: false
};
// Some init stuff
requestAnimFrame(this.animate.bind(this));
return this;
}
/**
* Init the game system
* @param {moduleConfig} moduleCongif - Module-Config instance
*/
Game.prototype = {
// General member
self: null,
moduleConfig: null,
gameConfig: null,
// Game member
renderer: null,
catcher: null,
stage: null,
// Nested 'static' objects
keyCommands: {
moveLeft: false,
moveRight: false
},
// Some more stuff
/**
* Main loop
*/
animate: function() {
window.requestAnimFrame(this.__proto__.animate.bind(this));
// Some more things to do
}
}
Если я не использую bind
, я получаю следующее сообщение об ошибке: Failed to execute 'requestAnimationFrame' on 'Window': The callback provided as parameter 1 is not a function.
.
Спасибо!
Хорошо, теперь я понимаю, что контекст меняется в рекурсивных функциях. Это была моя проблема. – BendEg
Рад, что я могу помочь –