0
我是新來的TypeScript,來自Java並具有JavaScript的一些知識。我正在通過製作一個很好的老蛇遊戲來學習TS!對象在setInterval函數之前聲明時未定義
我有這個班應該畫畫布的桂。在我的構造器中,我開始創建我的Snake對象。後來我開始遊戲循環,其中蛇應該被移動...
但是循環功能不起作用,因爲這個錯誤。 「未捕獲類型錯誤:無法讀取未定義的屬性」移動「。」
我懷疑它與setInterval函數有關,它可以「異步地」工作,但我不確定......這似乎是一種基本的JavaScript問題。
任何幫助,高度讚賞!
module gui {
export class Gui {
snake:model.Snake;
loop:any;
constructor() {
// get snake
this.snake = new model.Snake();
// Attach key event
document.addEventListener("keydown", KeyListener.handleEvt);
// activate game loop
this.loop = setInterval(this.gameLoop, 50);
}
gameLoop() {
if (this.snake) {
console.log("loop");
this.snake.move();
this.drawSnake()
}
}
drawPart(part:model.Part) { ... }
drawSnake() { ... }
}
class KeyListener {
static handleEvt(e) {
if (e) {
switch (e.keyCode) {
case 37:
console.log("left");
break;
case 38:
console.log("up");
break;
case 39:
console.log("right");
break;
case 40:
console.log("down");
break;
}
}
}
}
}
哦,可怕的「這在回調」問題.....!我在setInterval Mozilla文檔中找到了這個描述:https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval。 我結束了使用箭頭語法(ES6)。它做到了! this.loop = setInterval(()=> this.gameLoop(),this.loopSpeed); – olefrank 2015-04-01 15:45:52