Я все еще работаю над игрой в тетрис и пытаюсь использовать requestAnimationFrame, чтобы нарисовать свою фигуру T на черной доске.
Это проблема. requestAnimationFrame рисует кусок 2 раза, затем прекращает рисовать, хотя цикл for все еще работает. То есть после двух раз я вижу только черный фон. Когда я комментирую черный фон, часть появляется/анимируется просто отлично.
Я действительно в недоумении, почему это происходит.
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
const T = [
[
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 1, 1, 1, 0],
[0, 0, 1, 0, 0],
[0, 0, 0, 0, 0]
],
[
[0, 0, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 1, 1, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 0, 0, 0]
],
[
[0, 0, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 1, 1, 1, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]
],
[
[0, 0, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 1, 1, 0],
[0, 0, 1, 0, 0],
[0, 0, 0, 0, 0]
],
]
var piece = T[0];
const player = {
position: {x: 5, y: -1},
piece: piece,
}
function colorPiece(piece, offset) {
for(y = 0; y < piece.length; y++) {
for(x = 0; x < piece.length; x++) {
if (piece[y][x] !== 0) {
ctx.fillStyle = "red";
ctx.fillRect(x + offset.x, y + offset.y, 1, 1);
}
}
}
}
function drawCanvas() {
ctx.fillStyle = "black";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.scale(20, 20);
colorPiece(player.piece, player.position);
}
function update() {
drawCanvas();
requestAnimationFrame(update);
}
update();
ctx
? Я не вижу этого в этом фрагменте. Спасибо! Кроме того объясните, пожалуйста, остановки рисования по сравнению с анимацией --- я не вижу в этом коде ничего, что заставляло бы фигуру двигаться. Вы имеете в виду, что после двух кадров вы получаете только черный прямоугольник? - person cxw   schedule 30.06.2017