#javascript #html
#javascript #HTML
Вопрос:
Итак, у меня есть эта простая функция, которая должна показывать несколько кирпичей, но она показывает только один. Кто-нибудь знает почему? Я не показываю никаких ошибок.
function drawbricks() {
for (var r = 0; r < 12; r ) {
for (var c = 0; c < 6; c ) {
var posix = r 20;
var posiy = c 20;
ctx.fillRect(posix, posiy, 50, 50);
}
}
}
Комментарии:
1. не могли бы вы дать более подробную информацию, я имею в виду страницу, на которой вы хотите показать кирпичи. Вы можете добавить их в виде фрагмента
2. Они смещены на один пиксель — разве они не будут просто накладываться друг на друга? Может быть, попробуйте умножить вместо добавления и сделать кирпичи меньше смещения.
3.
ctx
здесь не определено. Пожалуйста, добавьте код, в котором вы его назначаете.
Ответ №1:
Я добавил некоторые константы, чтобы вы могли настроить свои блоки.
const c = document.getElementsByTagName('canvas')[0];
const ctx = c.getContext('2d');
ctx.fillStyle = 'orange';
drawbricks(ctx);
function drawbricks(ctx) {
const brickCountRows = 10;
const brickCountColumns = 15;
const brickWidth = 20;
const brickHeight = 10;
const brickSpacingX = 2;
const brickSpacingY = 2;
for (var r = 0; r < brickCountRows; r ) {
for (var c = -1; c < brickCountColumns; c ) { // start at -1 to fill gap caused by offset (see below)
var posix = c * (brickWidth brickSpacingX); // switched r by c (column is x component)
var posiy = r * (brickHeight brickSpacingY); // switched c by r (row is y component)
// offset every other row by half brickWidth brickSpacing
if (r%2 == 1) {
posix = Math.floor((brickWidth brickSpacingX)/2)
}
ctx.fillRect(posix, posiy, brickWidth, brickHeight);
}
}
}
<canvas/>
Ответ №2:
Я полагаю, что вы улучшаете умножение координат вместо добавления.
var posix = r * 20;
var posiy = c * 20;
Но все же «кирпичи» будут накладываться друг на друга.
Комментарии:
1. да, после публикации вопроса я изменил на multiply, и он по-прежнему не работает. Есть идеи?
2. @Elena Кирпичи больше, чем смещение.
3. @Elena тогда опубликуйте весь код. Не могу вам помочь, если мы не можем запустить ваш код.