Javascript循环选择所有矩形

标签 javascript canvas

每当我单击 Canvas 上的单个矩形时,它都会清除所有矩形。如何仅清除 Canvas 上单击的矩形?我猜问题出在我的代码中的 for 循环,因为它循环遍历所有矩形。

for(var i = 0; i < rect.length; i++){
    // Check if the x and y coordinates are inside the rectangle
    if(x > rect[i].x && x < rect[i].x + rect[i].width
        && y > rect[i].y && y < rect[i].y + rect[i].height)
    {
        // If true, clear the rectangle
        for(var j = 0; j < rect.length; j++){
            ctx.clearRect(rect[j].x,rect[j].y,rect[j].width,rect[j].height);
        }
    }
}

最佳答案

如果我正确理解你的代码,问题是你的第二个 for 循环。找到正确的矩形后,您将再次循环遍历它们。试试这个:

for(var i = 0; i < rect.length; i++){
    // Check if the x and y coordinates are inside the rectangle
    if(x > rect[i].x && x < rect[i].x + rect[i].width
        && y > rect[i].y && y < rect[i].y + rect[i].height)
    {
        // If true, clear the rectangle
        ctx.clearRect(rect[i].x,rect[i].y,rect[i].width,rect[i].height);
        break; //break out of the for loop since the rect was found
    }
}

关于Javascript循环选择所有矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27878531/

相关文章:

javascript - Chrome 渲染问题 - 弹出窗口背景覆盖上的白点

javascript - 我无法编辑我的 javascript 链接的样式

javascript - 在不知道字体系列的情况下更改 Canvas 的字体大小

javascript - 在 Canvas 上绘制视频 HTML5

JavaFX 当按钮按下时在文本字段中绘制具有尺寸的矩形并查找它们是否相交

javascript - 由于 Fire Base 中有 12 个字符串,因此表格重复 12 次

javascript - 我如何在vanilla js中调用node js的函数?

javascript - 使用 javascript 函数参数返回对象值

javascript - 如何每隔 x 秒在另一个 Canvas 或图像之上重新绘制一个 Canvas ?

javascript - 如何获取 Canvas 中绘制圆弧结束点的坐标?