描画したいすべての長方形のモデルを座標とともに保存します。次に、mouseclick イベント (または必要に応じて mouseover イベント) をリッスンし、モデルの各要素を参照して、マウス クリックが四角形の座標内で行われたかどうかを確認するだけです。
以前のポスターが言ったように、キャンバスに変更を加えるたびにキャンバスを再描画する必要があります (ただし、関心のある領域のみを再描画することで処理を高速化できます)。それが少し役立つことを願っています!
編集:
長方形オブジェクトを定義できます。
function Rectangle(x, y, w, h) {
this.x = x;
this.y = y;
this.w = w;
this.h = h;
this.contains = function(x, y) {
return (x > this.x && x <= (this.x + this.w) &&
y > this.y && y <= (this.y + this.h));
}
this.clone = function() {
return new Dimension(this.x, this.y, this.w, this.h);
}
}
そして、あなたのモデルとなる配列を持っています:
var model = [];
そして、それに長方形を追加します:
model.push(new Rectangle(10,10,10,10));//x, y, width, height
次に、キャンバスをクリックすると、マウス イベントからマウス クリック座標を取得し、配列をループして、クリックが四角形の 1 つの中で行われたかどうかを確認します。
for (i = 0 ; i < model.length ; i++) {
if (model[i].contains(mouseEvent.x, mouseEvent.y))
//do something like redraw your canvas
}