2015-12-11 27 views
0

這是一個常問的問題,但有一個轉折點。鼠標是否下降?不依賴於事件

我需要弄清楚鼠標是否被按下。好的。我做了一些研究。我發現這個可愛的問題/答案:JavaScript: Check if mouse button down?,它給出了多個如何跟蹤鼠標是否被按下的例子。對於我的用途,我已經對這個片段有所瞭解:

$(document).mousedown(function(){ 
    Game.isMouseDown = true; 
}); 
$(document).mouseup(function(){ 
    Game.isMouseDown = false; 
    Game.lastSquare = []; 
}); 

它工作得很好,除少數情況外。目前我正在進行大量調試,所以我幾乎總是打開調試器。當我將鼠標懸停在調試器上並釋放時(例如當我使用斷點時,或者只是快速移動鼠標時),將鼠標懸停在遊戲div上而不保留任何鼠標按鈕會產生與按住鼠標按鈕相同的結果。

我需要防止這種情況發生,我相信要做到這一點的方法是,如果鼠標按下而不是詢問由事件設置的Game.isMouseDown變量,那麼請求DOM。但是通過我所有的研究,我找不到如何問DOM這個問題。

+0

鼠標是不是一個DOM元素。 – xxbbcc

回答

0

檢查mousemove事件本身會捕獲按下了多少個按鈕。

$(document).mousemove(function(e){ 
    if(e.buttons > 0){ 
     Game.isMouseDown = true; 
    } else { 
     Game.isMouseDown = false; 
    } 
}); 

https://developer.mozilla.org/en-US/docs/Web/Events/mousemove

+0

謝謝。這工作很好。我將它直接集成到已經存在的Game div鼠標事件中,並且不再需要Game.isMouseDown變量。我還擺脫了某些鼠標事件觸發的函數內部的if語句。我也覺得像一個n00b。 – RoboticRenaissance