У меня есть 2 функции, первая функция рисует пустую сетку с выровненной сеткой (28x16), а вторая функция рисует квадратный квадрат, который заполняет выбранное место сетки цветом, каждый из которых равен 25X25 , вторая функция позволяет мне нарисовать прямоугольник в любом месте холста, используя расположение сетки. поэтому, чтобы нарисовать ящик, я создал другую функцию, которая вызывает места сетки и рисует ее там, например, чтобы нарисовать поле в месте сетки, где x = 5 и y = 4, эта строка должна быть введена drawWalls(5,4);
эта строка может быть использована снова и снова рисовать разные коробки, поэтому я могу рисовать ящики, и функция работает отлично, теперь я хочу создать более 1 квадратного окна одновременно (например, строку ящиков), проблема в том, что я никогда не создавал такой цикл или цикл, который имеет более 1 переменной, пожалуйста, помогите, также я немного запутался с массивами, я хочу знать, хранятся ли эти поля в массиве и как я могу их снова вызвать, скажем, например Я нажимаю на коробку, и она удаляется, это не важно, но если у вас есть идеи по первой проблеме, пожалуйста, помогите, спасибо за ваше время.рисунок 2d объектов с использованием координат в сетке JavaScript
ничьих сетки
function drawGrid() {
ctxBg.beginPath();
for (var i = 0; i <= canvasWidth-25; i+= 25) {
ctxBg.moveTo(-25 + i,55);
ctxBg.lineTo(-25 + i, canvasHeight - 55);
}
for (var i = 25; i <= canvasHeight -75; i+= 25) {
ctxBg.moveTo(55,25 + i);
ctxBg.lineTo(canvasWidth-55, 25 + i);
}
ctxBg.stroke();
}
function ClearBg() {
ctxBg.clearRect(0,0,canvasWidth,canvasHeight);
}
Draw стены
function Wall(row, col) {
this.row = row;
this.col = col;
this.color = "#000";
this.width = 25
this.height = 25
this.leftX = this.row;
this.rightX = this.row + this.width;
this.topY = this.col;
this.bottomY = this.col + this.height;
}
function drawWalls(x,y) {
walls.push(new Wall(x, y));
for (var b = 0; b < walls.length; b++) {
ctxWall.fillStyle = walls[b].color;
ctxWall.fillRect(walls[b].row * gridSize, walls[b].col * gridSize, walls[b].width, walls[b].height);
}
}
function createWalls() {
drawWalls(9,9);
drawWalls(8,8);
drawWalls(7,7);
}
Я пытаюсь сделать функцию createWalls в цикле, чтобы привлечь их все вместе, к сожалению, я до сих пор не создал мыши событие, но я скоро буду
Покажите свой фактический код. – alex
Вы должны показать какой-то существующий код. Что касается нажатия на ящик, холст не поддерживает события ни на чем, что вы рисуете, единственный способ добиться этого - сохранить границы объекта, который можно щелкнуть, захватить клики на холсте и пройти все границы до тех пор, пока вы не найдете его внутри. SVG может сохранять каждую фигуру в виде объекта и реагировать на события. –
Я посмотрю на SVG, спасибо – Dalomo