【发布时间】:2021-03-25 20:03:29
【问题描述】:
我正在尝试为 HTML Canvas 实现 eventListener。 我想从 SVG 画布向 rect 添加事件
问题是 我只能从矩形的某个点而不是整个矩形中获取数据。
canvas.addEventListener("click", e => {
this.mousePos = {
x: e.clientX - canvas.offsetLeft,
y: e.clientY - canvas.offsetTop
};
console.log(this.mousePos.x, this.mousePos.y);
const pixel = hitCtx.getImageData(
this.mousePos.x,
this.mousePos.y,
1,
1
).data;
console.log(pixel);
var r = pixel[0];
var g = pixel[1];
var b = pixel[2];
const color = "rgb(" + r + "," + g + "," + b + ")";
console.log(color);
if (color == "rgb(255,59,59)") {
console.log("click on the pipe");
}
});
https://codepen.io/chikichaka/pen/yLaMbwe
我阅读了这篇文章并遵循了使用颜色的第二种方法。
【问题讨论】:
-
您似乎在名为 canvas 的元素上绘制了管道,即红线,但在名为 hitCanvas 的画布上测试了单击的像素,除了一个像素之外,似乎什么都没有。应该在 hitCanvas 上绘制什么。此外,这似乎与 SVG 没有任何关系。您的代码笔中是否缺少某些内容?
-
@A Haworth 抱歉。我打错了它只是为了 HTML Canvas。我会编辑。我还阅读了这篇关于按颜色添加画布事件的文章。我会将这篇文章添加到我的帖子中。我编辑我的代码笔。感谢您的反馈!
-
您是否在 hitCanvas 上绘制其他东西,但通过在画布上覆盖图表管道来测试它是否在管道上?
-
@A Haworth Right。我想将事件添加到红色管道而不是整个画布覆盖
标签: javascript html image events canvas