Приведенный ниже код рисует прямоугольник на каждом перемещении мыши после нажатия кнопки мыши. Когда пользователь отпускает мышь, он должен прекратить рисование.убедившись, что я получаю событие для мыши для каждой мыши
Я пытаюсь выяснить, как убедиться, что рисование остановится, если пользователь освобождает мышь за пределами элемента холста.
Я думал, что я мог бы сделать это, установив обработчик события onmouseup
на моем случае внутри onmousedown
так:
canvas.onmousedown = function (e) {
drawing = true;
e.onmouseup = function (v) { drawing = false; }
};
, но это не сработало, потому что
e.onmouseup
никогда не вызывается. Таким образом, я в конечном итоге установил
window.onmouseup
.
Вопросы:
- почему был мой
e.onmouseup
никогда не называли? - Мое окончательное решение - лучший способ сделать это?
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8" />
<script type="text/javascript">
drawing = false;
function on_load(e) {
var canvas = document.getElementById("canvas");
canvas.onmousedown = function (e) { drawing = true; };
canvas.onmousemove = function (e) {
if (drawing)
{
var x = e.pageX - canvas.offsetLeft;
var y = e.pageY - canvas.offsetTop;
var context = canvas.getContext("2d");
context.strokeRect(x, y, 10, 10);
}
};
window.onmouseup = function (e) { drawing = false; };
}
</script>
</head>
<body onload="on_load()">
<canvas id="canvas" width="500" height="500" style="border: 1px solid black;">
</canvas>
</body>
</html>