OK、私は賢くしようとしたことを認めます。ShapeのdrawFuncプロパティを無効にすると、長方形の内側に何でも描画でき、KineticJSのクリック検出を使用できると思いました。これが私の試みです:
var shape = new Kinetic.Shape({
drawFunc: function(context) {
var id = 26; // Id of a region inside composite image.
context.beginPath();
context.rect(0, 0, w, h);
context.closePath();
this.fill(context);
this.stroke(context);
context.drawImage(copyCanvas, (id % 8) * w, flr(id / 8) * h,
w, h, 0, 0, w / 2, h / 2);
},
draggable: true
});
したがって、長方形を描画し、drawImage()を使用して長方形の上に何かを描画するというアイデアでした(copyCanvas自体が変更されるため、時々変更されることを除いて、テクスチャのように)。その間、私はイベント処理(特にドラッグアンドドロップ)がまだ「正常に機能する」ことを期待していました。さて、これが何が起こるかです:私のdrawImage()によってカバーされていない長方形の部分はクリックを正しく検出します。ただし、画像で覆われている長方形の4分の1は、クリックに応答しません。さて、私の質問はなぜですか?私はKineticJSコードを掘り下げて、クリック検出とは単にバッファーに描画し、指定されたx、yポイントにゼロ以外のアルファがあるかどうかを確認することを意味することを確認しました。長方形の上に画像を描画すると、これがどのように影響を受けるかわかりません。
何が起こっているのかアイデアはありますか?