Я делал пуговицы на холсте много раз. С помощью этого обработчика событий мыши для canvas
function getPosition(event) {
var x,
y;
if (event.x != undefined && event.y != undefined) {
x = event.x;
y = event.y;
} else {
x = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
y = event.clientY + document.body.scrollTop + document.documentElement.scrollTop;
}
x -= canvasElement.offsetLeft;
y -= canvasElement.offsetTop;
x = x - window.pageXOffset;
y = y - window.pageYOffset;
mouseX = x;
mouseY = y;
}
getPosition должен использоваться / вызываться холстом так:
<canvas onclick='getPosition(event);'></canvas>
Также работает при наведении курсора и перемещении мыши.
Таким образом, используя mouseX и Y, вы можете проверить, находится ли мышь на кнопке. Кнопка должна быть прямоугольной.
if (mouseX > buttonX &&
mouseX < buttonX + buttonWidth &&
mouseY > buttonY &&
mouseY < buttonY + buttonHeight) {
//The mouse is on the button!
}
buttonX и Y относятся к верхнему левому углу кнопки / области. Аналогично ctx.fillRect ()