在setInterval函数之前声明时未定义对象
Object undefined when declared before setInterval function
我是TypeScript的新手,来自Java,对JavaScript有一些了解。我正在学习TS通过制作一个好的老蛇游戏!
我有这个班桂,应该画画布。在我的构造函数中,我从创建Snake对象开始。稍后,我开始游戏循环,蛇应该在其中移动。。。
但是由于这个错误,循环函数不起作用"未捕获类型错误:无法读取未定义的属性'move'。"
我怀疑这与"异步"工作的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;
}
}
}
}
}
更改:
this.loop = setInterval(this.gameLoop, this.loopSpeed);
收件人:
this.loop = setInterval(() => this.gameLoop(), this.loopSpeed);
当您直接传入函数时,this
的值丢失了。
相关文章:
- 在setInterval函数之前声明时未定义对象
- 使用+=运算符未定义对象中的第一个元素
- 通过 Requirejs 传递的未定义对象
- JS:防止访问未定义对象的属性时出错
- AngularJs为什么在ng禁用函数上未定义对象
- IE上未定义对象值
- JQuery函数返回一个对象,但它被集成为未定义对象
- AJAX响应带有未定义/对象文档
- 处理未定义对象的内联比三进制更聪明
- JavaScript错误未定义对象,尽管对象存在
- Javascript未定义对象
- 未定义对象子属性的Javascript类型
- Javascript多维数组未定义对象错误
- 在一条语句中获取多个未定义对象中的初始化对象
- Javascript -对象中的未定义对象
- 是否可以像扩展其他对象一样扩展未定义对象
- Java Script Ionic框架中的未定义对象
- if else子句中未定义对象的未定义属性
- 未定义对象方法
- 在JavaScript中使用typeof仍然会导致未定义对象的错误