Javascript 取消鼠标上的功能?

Javascript 取消鼠标上的功能?,javascript,Javascript,我想知道如何在鼠标启动事件时取消/停止功能 我基本上有一个onmousedown和一个mousemove,这让我找到了一种方法,用鼠标计算出偏移量,但是如果我用鼠标移动,它仍然跟着鼠标 我使用: function mousePos(e){ //gets the mouse position on click "start position" mousex = e.pageX; mousey = e.pageY; canvas.addEventListener("mousemov

我想知道如何在鼠标启动事件时取消/停止功能

我基本上有一个onmousedown和一个mousemove,这让我找到了一种方法,用鼠标计算出偏移量,但是如果我用鼠标移动,它仍然跟着鼠标

我使用:

function mousePos(e){  //gets the mouse position on click "start position"
    mousex = e.pageX;
    mousey = e.pageY;
canvas.addEventListener("mousemove", movePos, false);
}

function movePos(e){ // works out how far the mouse has moved from start position
    offset_x = mousex - e.pageX;
    offset_y = mousey - e.pageY;
}

//this is in my init function for body onload
canvas.addEventListener("mousedown", mousePos, false);

我的问题是,我需要它停止运行,一旦按钮不再按下

为mouseup添加事件监听器,然后删除mousemove的事件监听器

鼠标:

 canvas.addEventListener('mouseup',onMouseUp,false);
然后在onMouseUp中删除:

function onMouseUp(e) {
    canvas.removeEventListener('mousemove',movePos,false)
}

添加一个
mouseup
侦听器:

 canvas.addEventListener('mouseup', mouseFin, false);
function mouseFin(e) {
    canvas.removeEventListener('mousemove', movePos, false)
}
然后在
mouseup
侦听器中,删除
mousemove
侦听器:

 canvas.addEventListener('mouseup', mouseFin, false);
function mouseFin(e) {
    canvas.removeEventListener('mousemove', movePos, false)
}

演示:

如何在mouseup上删除mousemove?我是否使用clear(mousemove)?@Dave您不删除处理程序。当鼠标按下时,将共享变量设置为true;当鼠标向上时,将其设置为false;如果该变量为true,则仅运行移动处理程序中的代码。但是使用标志会使程序始终调用侦听器并检查标志……嗯,我的偏移量更改的性能目前正在造成严重的延迟。