下面的代碼在按下鼠標按鈕後每次移動鼠標時繪製一個矩形。當用戶釋放鼠標時,它應該停止繪圖。確保我獲得每個鼠標按下時的鼠標移動事件
我想弄清楚如果用戶在畫布元素之外釋放鼠標,繪圖將會停止。
我以爲我可以通過這樣的內部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>