@kaliboba

Почему остаются следы на canvas?

Суть такова: есть игрок, он может ходить по канвасу, однако оставляет за собой след, который не стирается, что я сделал не так и чем нужно дополнить мой код?
отрисовка игрока:
socket.on("state", (players) => 
{   
    for(const id in players)
{
    const player = players[id];
context.strokeRect(player.positionX, player.positionY,150,75);
}
});

движение игрока:
const movement = 
{
    up: false,
    down: false,
    right: false,
    left: false
}
document.addEventListener("keydown", (e) => {
    if ((e.code === 'KeyW'))
    {
        movement.up = true;
    }
    if ((e.code === 'KeyS'))
    {
        movement.down = true;
    }
    if ((e.code === 'KeyA'))
    {
        movement.left = true;
    }
    if ((e.code === 'KeyD'))
    {
        movement.right = true;
    }
});

    document.addEventListener("keyup", (e) => {
        if ((e.code === 'KeyW'))
    {
        movement.up = false;
    }
    if ((e.code === 'KeyS'))
    {
        movement.down = false;
    }
    if ((e.code === 'KeyA'))
    {
        movement.left = false;
    }
    if ((e.code === 'KeyD'))
    {
        movement.right = false;
    }
        });

setInterval(() => {
    socket.emit("movement",movement);
}, 1000 / 60);

движение игрока2:
socket.on("movement", (data) => 
{
const player = players[socket.id];
if (data.up)
{
    player.positionY -= 5
};
if (data.down) 
{
    player.positionY += 5
};
if (data.left)
{
    player.positionX -= 5
};
if (data.right)
{
    player.positionX += 5
};
})

класс игрока, откуда брались эти координаты:
class Player {

    constructor(props)
    {
        this.name = props.name,
        this.id = props.id,
        this.playerRadius = 30,
        this.positionX = 300,
        this.positionY = 300
    }
}
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
IvanU7n
@IvanU7n
не видно собственно очистки канваса

да и итерировать через for(in) по объектам как-то странно, когда есть for(of) вместе с Object.entries и подобным
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SummerWeb Ярославль
от 120 000 до 180 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
Market-place Ростов-на-Дону
от 100 000 до 200 000 ₽
20 июн. 2024, в 17:08
3000 руб./в час
21 июн. 2024, в 22:53
1000 руб./за проект
21 июн. 2024, в 22:12
5000 руб./за проект