2013-02-26 3 views
0

Немного общего вопроса, но тем не менее я в ситуации, когда я не знаю, что делать, и Google провалил меня!Когда два объекта зависят друг от друга? Как отменить их?

Я пытаюсь переписать столбец решетки решетки с холстом, который я создал.

Теперь есть объект сетки и объект блока. Сетка 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; 
    }; 
} 

Делать это так, как я делал это соединяет два объекта вместе и от того, что я percieved, что это плохо. Как я могу убедиться, что две переменные имеют одинаковый размер без соединения объектов, если это имеет смысл?

ответ

1

Настоящая проблема заключается в том, что ваша функция block() принимает значение непосредственно из экземпляра grid().

Если вы хотите, чтобы функция block() была повторно использована и развязана, ее так же просто, как и изменение блока(), чтобы принять размер во время строительства.

arr[i] = new block({size: this.cellSize});