2011-10-07 76 views
2

我試圖將鼠標Y座標保存到變量startPosition只有每100ms,而.mousemove是活動的,而鼠標按鈕被保留(mousedown),我的代碼不適合我,我假設它是錯的?有人能幫我解決這個問題嗎?更新鼠標Y座標每100ms

$(document).mousemove(function (e) { 
     gesturesY = parseInt(e.pageY, 10); 
     startPosition = setInterval(gesturesY, 100); 
    }); 

編輯: 我覺得這可能是一個全新的問題嗎?對不起,有任何困惑,下面是澄清我混亂的一個問題。 這裏,我們去:

http://jsfiddle.net/nicktheandroid/PCgFK/1/

此的jsfiddle讓你可以把頁面中滾動框又把它向上或向下,像觸摸屏手機。現在,如果您抓住頁面(在滾動框區域)並向上移動鼠標(導致頁面向下滾動),然後釋放鼠標按鈕,速度將會啓動,並且會稍微跳轉頁面。當你真正抓住頁面並向上或向下滑動頁面以滾動頁面時,它就在那裏,它使它慢慢穩定地停下來。如果用戶不輕彈,而只是拖動頁面,然後穩定地放下鼠標並釋放鼠標按鈕,它就會跳轉,就像我上面所說的那樣。當人們抓住並拖動頁面時,我試圖擺脫那個跳躍,然後當鼠標靜止時,釋放鼠標按鈕。

我認爲通過每100ms左右更新一次startPosition,它可以消除跳躍,但仍然保持速度減緩,從而使頁面向上或向下滑動。我相當接近完成這一點,但仍然存在我剛剛提到的問題。別人幫了我與添加的速度,並在腳本中,有一個名爲velocityCheckWait變量,我認爲是做了什麼,我想它做的是相反的。

對不起,有任何困惑,並感謝任何人可以奉獻任何時間來幫助我。

+1

你的代碼是錯誤的在許多層面上。請更詳細地解釋你正在嘗試做什麼。例如,你的代碼嘗試在'mousemove'事件之後開始跟蹤鼠標 - 爲什麼?你的描述沒有提到。 – Jon

+0

這不是你如何使用'setInterval'。你完全沒有理由在這裏使用'parseInt'。你應該閱讀更多關於一些基本的JavaScript。看看這個網站https://developer.mozilla.org/en/JavaScript –

回答

5

沒有什麼可以真正做到你想要的;仿效這一點的最好辦法是下面的代碼:

var currentPosition = 0; 

$(document).mousemove(function (e) { 
    currentPosition = e.pageX; 
}); 

setInterval(function() { 
    startPosition = currentPosition; 
}, 100); 

這不斷更新鼠標的位置,但只有它更新到您想要每100ms(在此期間變量,它的更新其它變量currentPosition

如果你只想要更新的位置由於性能後顧之憂每100ms,首先,我會仔細檢查你是不是低估計算機的電源,這些天。如果是有效關心然而,以下代碼將幫助您:

var startPosition = 0; 

$(document).mousemove(function (e) { 
    startPosition = e.pageX; 
}); 

setInterval(function() { 
    // read in startPosition and do your **intensive** task here. 
}, 100); 

在這裏,指定startPosition是被更新了所有的時間,但你只執行你的間隔每100ms。

+0

@Neal:感謝您的小改正;) – Matt

+0

沒問題senor^_^ – Neal

+1

我想你的意思是*低估* – JJJ

0

你要的位置,從你的鼠標移動事件存儲在一個變量,並且每100ms這個值放到另一個變量:

var mouseY; 
$(document).mousemove(function(e) { 
    mouseY = e.pagey; 
}); 

var startPosition; 
setInterval(function() { 
    startPosition = mouseY; 
}, 100); 

你的例子顯示了一個缺乏基本的JavaScript的理解。如果你不明白我的例子,只是要求在評論,我會很樂意解釋。

+0

那麼這隻會在'.mousemove'執行時更新'startPosition'變量?沒有理由我需要它一直運行,對我來說,讓它不斷運行只是一種浪費。即使我低估了上述計算機能力的力量,但如果它不需要一直髮生,那麼就沒有理由。我對睡眠不足以及對Javascript的簡單理解有點生疏,所以請原諒我的無知。 –

+0

這將在每次移動鼠標時更新'mouseY'變量,並且每100ms更新'startPosition'變量。在鼠標移動上設置變量是微不足道的。根據您使用它所進行的計算,您可能有理由將其限制在100ms。在任何情況下,'mouseY'將始終具有正確的鼠標y值,並且'setInterval'中的函數將每隔100ms調用一次。 –