我有以下功能来获取鼠标点击位置(坐标)。
$('#myCanvas').on('click', function(e) {
event = e;
event = event || window.event;
var canvas = document.getElementById('myCanvas'),
x = event.pageX - canvas.offsetLeft,
y = event.pageY - canvas.offsetTop;
alert(x + ' ' + y);
});
我需要在点击位置时获得鼠标点,并在拖动鼠标点位置后将其锁定。
即, mousedown point和mouseup points。
答案 0 :(得分:8)
尝试一些不同的设置:
var canvas = myCanvas; //store canvas outside event loop
var isDown = false; //flag we use to keep track
var x1, y1, x2, y2; //to store the coords
// when mouse button is clicked and held
$('#myCanvas').on('mousedown', function(e){
if (isDown === false) {
isDown = true;
var pos = getMousePos(canvas, e);
x1 = pos.x;
y1 = pos.y;
}
});
// when mouse button is released (note: window, not canvas here)
$(window).on('mouseup', function(e){
if (isDown === true) {
var pos = getMousePos(canvas, e);
x2 = pos.x;
y2 = pos.y;
isDown = false;
//we got two sets of coords, process them
alert(x1 + ',' + y1 + ',' +x2 + ',' +y2);
}
});
// get mouse pos relative to canvas (yours is fine, this is just different)
function getMousePos(canvas, evt) {
var rect = canvas.getBoundingClientRect();
return {
x: evt.clientX - rect.left,
y: evt.clientY - rect.top
};
}
那么我们为什么要在window
上听鼠标?如果您将鼠标移到canvas
之外,然后释放鼠标按钮,则该活动不会在canvas
注册。所以我们需要倾听全球事件,例如window
。
由于我们已经在鼠标按下事件中标记了我们的isDown
,因此我们知道以下鼠标按下"属于"到画布(我们检查isDown
标志)。
答案 1 :(得分:0)
使用接收器,如$('#myCanvas')。mousedown和$('#myCanvas')。mouseup
答案 2 :(得分:0)
所以,你需要拖拉吗?嗯,这很容易:首先你检测到'onclick'如果指向你的目标内部(矩形,圆形,等等)保存点到变量,'onmousemove'你移动对象然后'onmousedown'你得到最后一点
希望它会对你有所帮助!