javascript - 每次我画同样的东西时,画布都会滞后?
问题描述
我正在摆弄画布标签,制作一堆可以单击并拖动的矩形,但是在拖动 4 或 5 次后,画布开始滞后很多,我错过了什么吗?
第一次移动它是完美的,但其余的并不那么顺利。
也许我没有正确清除画布,但还有其他更好的方法吗?
$(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
解决方案
就像 mouseup 一样,只需将 mousemove eventListener 从 mouse down eventListener 中取出即可。我不知道,但似乎有效
推荐阅读
- java - 源服务器没有找到目标资源的当前表示或不愿意透露存在的表示。状况报告
- google-apps-script - 我的插件创建触发器,但脚本仪表板中的项目名称为空白
- javascript - bootstrap-4 列显示中断与 javascript style.display = "block"
- git - git 丢弃对一个文件的更改,同时保留所有其他文件
- bash - 来自数组项的自动完成输入
- excel - 使用 vba 在 Excel 中加载签名的 .Net dll 问题
- excel - Excel 条件缩放颜色基于拆分单元格中的另一个值
- java - 空对象上的 content.Context.getSharedPreferences(java.lang.String, int)' - 和 Firebase 错误
- git - 在变基之前保存 Git 状态
- android - Android Nearby Connection API 不适用于特定设备