2013-02-10 110 views
4

我正在編寫一個JavaScript遊戲,移動球。 我想要一個警告消息,當用戶設法點擊移動的球。 它現在正在工作,但事件並非每次都發射......它看起來很喜歡球正在移動太快,以致於js引擎可以注意到球確實被點擊了。 我在5歲CPU上的Firefox 18,Windows 7的測試...點擊事件沒有射擊移動目標

下面是我的一些代碼位:

myBall = document.getElementById("myBall"); 
function move(){ 
    myLeft += 20; 
    myBall.style.left = myLeft + "px"; 
}  
myTimer = window.setInterval(move, 10); 
... 
myBall.addEventListener("click", function(){alert("win")}); 

有什麼辦法來設置一個點擊事件監聽器小的移動目標,那會表現得更準確? jQuery會在這裏有所作爲嗎? 謝謝。

+0

注意,動畫使用請求動畫幀而不是setInterval。 – 2013-02-10 08:24:48

+2

也許球移動得太快,鼠標按鈕不動了?你有沒有嘗試添加「mousedown」的事件監聽器? – wassup 2013-02-10 08:25:59

+0

html5 canvas + kinetic.js有很多很酷的選項 - >我在wwww.threeblokesfromchina.com上有一個示例球 – 2013-02-10 08:27:12

回答

3

好的,爲了解決您遇到的問題,您需要爲mousedown而不是click添加事件偵聽器。

這是因爲click需要鼠標左鍵去都向下和向上,並且 - 作爲@techfoobar注意 - 它必須在目標元素在同一個地方進行(如果mousedownmouseup COORDS不相等,則click事件不會被解僱)。球只是移動得太快而不能滿足上述條件,因此就是問題所在。

+0

完美,謝謝,那就是問題所在。 – Jean 2013-02-10 09:05:05