dev_borodin
@dev_borodin
DNO, ETO TUT

Почему происходит инкремент переменной time?

const canvas = document.getElementById('tetris');
const context = canvas.getContext('2d');
context.scale(20, 20);


const matrix = [
    [0, 0, 0],
    [1, 1, 1],
    [0, 1, 0]
];

const player = {
    matrix: matrix,
    pos: {
        x: 5,
        y: 5
    }
};

function draw() {
    context.fillStyle = '#000';
    context.fillRect(0, 0, canvas.width, canvas.height);

    drawMatrix(player.matrix, player.pos);
}

function drawMatrix(matrix, offset) {
    matrix.forEach(function (row, y) {

        row.forEach(function (value, x) {

            if (value !== 0) {
                context.fillStyle = 'red';
                context.fillRect(x + offset.x, y + offset.y, 1, 1)
            }
        })
    });
}

function update(time = 0) {
    console.log(time);
    draw();
    requestAnimationFrame(update);
}

update();


Вопрос в топике, заранее спасибо, еще было бы неплохо ткнуть в доку, я не смог нагуглить почему так происходит.
  • Вопрос задан
  • 178 просмотров
Решения вопроса 2
abyrkov
@abyrkov
JavaScripter
Дока, как вы и просили. Смотрите Parametres - callback.

Говоря на русском, в callback передается параметр времени из performance.now(). Поэтому, правильнее было бы писать так:
function update(time = performance.now()) {
...
}
Ответ написан
@sugadu
https://developer.mozilla.org/ru/docs/DOM/window.r...
Callback метод будет вызван с единственным аргументом, содержащим время, на которое запланирована анимация.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы