typescript - 通过拖放(画布)绘制一个矩形
问题描述
所以我想从我的画布 UI 中的按钮中拖出一个矩形,并在画布上放置一个新的矩形,但每次我试图将它拖出来时,它都会在短时间内产生很多矩形,然后完全停止。我的代码中的问题在哪里?
更新
function update(): void {
crc2.clearRect(0, 0, width, height);
crc2.putImageData(img, 0, 0);
if (rectangleArray) {
for (let i: number; i < rectangleArray.length; i++) {
rectangleArray[i].draw();
}
}
if (rectangleDragged == true) {
currentRectangle.draw();
}
}
手柄Mousedown
function handleMousedown(_client: MouseEvent): void {
let isLeftClicked = _client.which === 1;
if (!isLeftClicked) return;
if (_client.offsetX > xButton1 &&
_client.offsetX < xButton1 + wButton1 &&
_client.offsetY > yButton1 &&
_client.offsetY < yButton1 + hButton1) {
let rectangleDraw = new Draw(_client.offsetX, _client.offsetY);
let rectangle = new Rectangle(0, rectangleDraw);
currentRectangle = rectangle;
rectangleArray.push(rectangle);
rectanglePresent = true;
rectangleDragged = true;
window.addEventListener("onclick", handleMousemoveRectangle);
window.addEventListener("mouseup", handleMouseup);
console.log(rectangleClick);
}
for (let rectangle of rectangleArray) {
if (
rectanglePresent == true &&
_client.offsetX > rectangle.position.x - rectangle.w / 2 &&
_client.offsetX < rectangle.position.x + rectangle.w / 2 &&
_client.offsetY > rectangle.position.y - rectangle.h / 2 &&
_client.offsetY < rectangle.position.y + rectangle.h / 2) {
window.addEventListener("mousemove", handleMousemoveRectangle);
currentRectangle = rectangle;
rectangleDragged = true;
}
}
}
手柄鼠标
function handleMouseup(_client: MouseEvent): void {
if (dragged) {
setTimeout(() => {
dragged = false;
}, 1000);
}
for (let rectangle of rectangleArray) {
currentRectangle = rectangle;
if (rectanglePresent == true &&
currentRectangle.position.y > 600
) {
let index: number = rectangleArray.indexOf(currentRectangle);
rectangleArray.splice(index, 1);
}
}
window.removeEventListener("mousemove", handleMousemoveRectangle);
window.removeEventListener("mouseup", handleMouseup);
}
手柄鼠标移动矩形
export function handleMousemoveRectangle(_client: MouseEvent): void {
currentRectangle.position.x = _client.offsetX;
currentRectangle.position.y = _client.offsetY;
currentRectangle.draw();
rectangleDragged = true;
dragged = true;
console.log();
}
解决方案
推荐阅读
- github - 无法验证 webhook
- php - 用于多个选择的 php 脚本和运行速度比原来慢得多的插入
- python - 消息未清除 - discord.py 重写
- tsql - 如何强制对每次修改应用检查约束
- ios - 如何正确自动缩放 UIButton 和标题文本?
- java - Wildfly 10.1 反序列化持久会话
- c - 为什么我会使用以下代码获得“双重免费或损坏”?
- for-loop - 在彼此中写三个 for 循环?
- node.js - How do I correctly use Parse.Roles relationships for multiple Parse.Objects and Users over time?
- spring - Spring boot @ConfigurationProperties 未从外部属性文件或类路径属性文件加载