2013-04-30 77 views
0

由於onmousedown不起作用一樣,如果你持有onkeydown我不得不妥協,創造我自己的風格,到目前爲止,我想出了這一點:如何在間隔時間內刷新鼠標事件參數?

can.onmousedown = function(e) { 
    map.moving = setInterval(function() { 
     console.log(e.pageX + ' ' + e.pageY); 
     map.posX = e.pageX; 
     map.posY = e.pageY; 
    }, 70); 
} 

can.onmouseup = function(e) { 
    clearInterval(map.moving); 
} 

偉大的工程,只有現在我遇到的問題是,e參數僅在初始點擊時設置,因此鼠標座標在整個間隔內保持不變,任何想法如何解決這個問題?

+1

以'mousedown'開始,用'mousemove'拖動,用'mouseup'停止 – Andreas 2013-04-30 14:57:04

+0

只是jAndys的一個例子:[fiddle](http://jsfiddle.net/h4uaa/) – Andreas 2013-04-30 15:21:50

回答

0

試試這個:

can.onmousedown = function(e) { 
    map.moving = setInterval(function() { 
     e = e || window.event; 
     console.log(e.pageX + ' ' + e.pageY); 
     map.posX = e.pageX; 
     map.posY = e.pageY; 
    }, 70); 
} 

can.onmouseup = function(e) { 
    clearInterval(map.moving); 
} 
1

您需要調用mousemove以及。

can.onmousemove = function(e) { 
    if(map.moving) { 
     console.log(e.pageX + ' ' + e.pageY); 
     map.posX = e.pageX; 
     map.posY = e.pageY; 
    } 
}; 

can.onmousedown = function(e) { 
    map.moving = true; 
}; 

can.onmouseup = function(e) { 
    map.moving = false; 
}; 

或者,你可能想分離和減緩mousemove處理程序的執行,因爲它發生時(如scroll events,非常快)。例如,也可以調用timeouts

相關問題