下面的代码在按下鼠标按钮后每次移动鼠标时绘制一个矩形。当用户释放鼠标时,它应该停止绘图。确保我获得每个鼠标按下时的鼠标移动事件
我想弄清楚如果用户在画布元素之外释放鼠标,绘图将会停止。
我以为我可以通过这样的内部onmousedown
在我的事件设置onmouseup
事件处理程序做到这一点:
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>