一个类定义如下:
export default class FishGame {
constructor(window) {
.......
this.window = window
......
}
gameloop() {
this.window.requestAnimationFrame(this.gameloop);
var now = Date.now();
this.deltaTime = now - this.lastTime;
this.lastTime = now;
....
}
}
您可以看到gameloop函数是一个递归调用。 我以这种方式调用此函数:
function game() {
let fishGame = new FishGame(this);
fishGame.gameloop();
}
当引发异常时,有人可以告诉我为什么该对象为null吗?:
reset_index
答案 0 :(得分:0)
class FishGame {
static loop(game) {
function doloop() {
requestAnimationFrame(doloop)
game.gameloop()
}
doloop()
}
constructor() {
self = this;
this.name = "Lamax"
}
gameloop() {
console.log(Date.now()+": "+this.name);
}
}
FishGame.loop(new FishGame());
问题是您正在调用此方法,在requestAnimationFrame中作为参数传递的函数中,尝试上述代码段
答案 1 :(得分:0)
问题是this
在回调中丢失。 this post中描述了几种清洁的方法。一种方法是将this
绑定到回调,或使用自动绑定了this
的箭头函数:
class FishGame {
constructor() {}
gameloop() {
requestAnimationFrame(() => this.gameloop());
console.log(Date.now());
}
}
new FishGame().gameloop();