2012-02-25 65 views
1

我想知道如何取消/停止鼠標事件的功能?鼠標取消功能?

我基本上有一個onmousedown後跟一個mousemove,這讓我找到一個方法來計算出鼠標的偏移量,但是如果我mouseup - 它仍然繼續跟着鼠標!

我用:

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); 

我的問題是我需要它停止運行,一旦按鈕不再壓制。

回答

1

添加mouseup聽衆:

canvas.addEventListener('mouseup', mouseFin, false); 

然後在mouseup監聽器,刪除mousemove聽衆:

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

演示:jsfiddle.net/dATCA

2

爲mouseup添加事件偵聽器,並在那裏刪除mousemove的事件偵聽器。

鼠標鬆開:

canvas.addEventListener('mouseup',onMouseUp,false); 

,然後onMouseUp刪除:

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

你如何去除鼠標移動的鼠標鬆開關係嗎?我是否使用清除(mousemove)? – Sir 2012-02-25 23:56:51

+0

@Dave你不要刪除處理程序。當鼠標關閉時,將共享變量設置爲true,當鼠標啓動時將其設置爲false,並且只在移動處理程序內運行代碼(如果該變量爲true)。 – Ben 2012-02-26 00:00:10

+0

@Ben你能舉例說明你意思 ? – Sir 2012-02-26 00:03:26