Холст отстает каждый раз, когда я рисую одно и то же? - PullRequest
0 голосов
/ 27 апреля 2019

Я возился с тэгом canvas, создавая кучу прямоугольников, которые я могу щелкнуть и перетащить, но после 4 или 5 раз перетаскивания canvas начинает сильно отставать, есть что-то, чего мне не хватает?

Первый раз, когда вы перемещаете его, он идеален, но все остальное не так гладко.

Может быть, я не правильно очищаю холст, но есть ли другой способ лучше?

$(document).on("mousedown", '#myCanvas', () => {
    mouseDown = true;
    $(document).on("mousemove", (event) => {
        if (mouseDown) {
            if (mouseX && mouseY) {

                // Clear the canvas
                canvasCtx.save();
                canvasCtx.setTransform(1, 0, 0, 1, 0, 0);
                canvasCtx.clearRect(0, 0, canvasCtx.canvas.width, canvasCtx.canvas.height);
                canvasCtx.restore();

                // Translate to new x & y
                canvasCtx.translate((canvasX + (event.pageX - mouseX)), (canvasY + (event.pageY - mouseY)));

                                // Fill with previous generated rectangles
                for (let i = 0; i < boxes.length; i++) {
                    canvasCtx.fillStyle = boxes[i].color;
                    canvasCtx.fillRect(boxes[i].x, boxes[i].y, boxes[i].width, boxes[i].height);
                }

                // Paint
                canvasCtx.stroke();

            }

            // Get last mouse movement
            mouseX = event.pageX;
            mouseY = event.pageY;
        }
    })
})

Я создал JSFiddle

1 Ответ

0 голосов
/ 27 апреля 2019

Просто возьмите mouseLove EventListener из мыши вниз EventListener, как mouseup.Я не знаю, но, кажется, это сработало

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...