一般性问题,但不是我在一个我不知道该做什么的情况下,谷歌让我失望了!
我正在尝试用我构建的画布重新编写网格数组碰撞。
现在有一个网格对象和一个块对象。网格cellSize
取决于块size
的大小,反之亦然。原因是要计算出网格数组来存储块我必须先弄清楚如何构建它,这取决于块的大小。例如,
var grid = new grid();
function grid() {
this.cellSize = 50;
this.cellsX = canvas.width / this.cellSize;
this.cellsY = canvas.height / this.cellSize;
this.buildGrid = function() {
var arr = new Array(this.cellsX);
for(var i = 0; i < arr.length; ++i) {
arr[i] = new Array(this.cellsY);
}
return arr;
};
this.arr = this.buildGrid();
this.getGridCoords = function(i) {
return Math.floor(i / this.cellSize);
};
}
function block() {
this.size = grid.cellSize; // size of the block is same as cellSize
this.x = 0;
this.y = 0 - (this.size * 1.5);
this.baseVelocity = 1;
this.velocity = this.baseVelocity;
this.update = function() {
this.y += this.velocity;
};
}
按照我的方式做到这一点,将两个物体结合在一起,并且从我所感受到的这一点开始就是一件坏事。如果有意义的话,我怎样才能确保两个变量的大小相同而不耦合对象?
答案 0 :(得分:1)
真正的问题是你的block()函数直接从grid()的实例中获取一个值。
如果您希望block()函数可以重复使用和解耦,那么就像在构造期间更改block()以获取大小一样简单。
arr[i] = new block({size: this.cellSize});