【发布时间】:2019-03-13 01:48:06
【问题描述】:
我正在尝试检测画布点击以及点击坐标是否与形状匹配。它工作正常,问题是当形状在画布上重叠时(一个形状可能比另一个小),那么两个形状都会被删除。有没有办法避免这种情况,一次只删除一个?
addShape() {
const randomNum = (min, max) => Math.round(Math.random() * (max - min) + min),
randomRad = randomNum(10, 100),
randomX = randomNum(randomRad, this.canvas.width - randomRad);
let shape = new Shape(randomX, randomNum, randomRad);
shape.drawShape();
this.shapes.push(shape);
}
canvasClick() {
if(!this.paused) {
const canvasRect = event.target.getBoundingClientRect(),
clickedX = event.clientX - canvasRect.left,
clickedY = event.clientY - canvasRect.top;
for (let i = 0; i < this.shapes.length; i++) {
if(Math.pow(clickedX - this.shapes[i].x, 2) + Math.pow(clickedY - this.shapes[i].y, 2)
< Math.pow(this.shapes[i].rad,2)) {
this.shapes.splice(i, 1);
}
}
}
}
提前感谢您的帮助!
【问题讨论】:
标签: javascript canvas