【发布时间】:2018-03-08 09:26:51
【问题描述】:
我正在尝试使用 Classes 制作游戏,以使我的代码更简洁、更具可读性,但有些东西不起作用。
在我的Canvas 类的“创建”函数中,我定义了this.ctx,并在另一个名为Tile 的类中再次调用它。我想在所有班级的任何地方都使用this.ctx。但是在那个类中,我在Canvas 类中定义的this 不再存在于Tile 类中,它们也不存在于App 类中。我尝试返回 this 对象,但这似乎不起作用。
谁能帮我解决这个问题。提前致谢!
class App {
constructor() {
this.gridX = 4;
this.gridY = 4;
this.blockSize = 100;
this.width = this.gridX * this.blockSize;
this.height = this.gridY * this.blockSize;
this.grid = new Array(this.gridX).fill(new Array(this.gridY));
document.addEventListener("DOMContentLoaded", () => {
const canvas = new Canvas();
canvas.create(this.width, this.height);
this.makeGrid();
});
}
makeGrid() {
this.grid.forEach((value, i) => {
this.grid.forEach((value, j) => {
new Tile().createTile(i, j);
});
});
}
}
class Canvas extends App {
create(width, height) {
this.canvas = document.createElement('canvas');
this.canvas.setAttribute('width', width);
this.canvas.setAttribute('height', height);
document.body.appendChild(this.canvas);
this.ctx = this.canvas.getContext('2d');
}
}
class Tile extends App {
createTile(x, y) {
this.ctx.fillStyle = 'white';
this.ctx.strokeStyle = "red";
this.ctx.fillRect(j + 1, i + 1, this.blockSize - 2, this.blockSize - 2);
}
}
new App();
【问题讨论】:
-
您似乎对继承感到困惑。
标签: javascript class oop this