2014-02-19 162 views
1

我是相當新的HTML和Javascript,所以我想做一個小的增量遊戲中實踐。這是我試圖用來計算自動增益/秒的代碼,以及相應地調整標籤未聚焦並且setInterval停止運行的代碼。麻煩與.getTime()

var startTime = new Date(); 
var endTime = new Date(); 
var interval = 100; 


window.setInterval(function(){ 
startTime.getTime(); 
var timeDiff = startTime - endTime; 

do{ 
document.getElementById('woodAmount').innerHTML = Math.floor(user.wood += (user.WPS/10)); 
document.getElementById('oilAmount').innerHTML = Math.floor(user.oil += (user.OPS/10)); 
document.getElementById('goldAmount').innerHTML = Math.floor(user.gold += (user.GPS/10)); 
document.getElementById('coalAmount').innerHTML = Math.floor(user.coal += (user.CPS/10)); 
timeDiff -= interval; 
}while (timeDiff >= interval); 

endTime.getTime(); 
}, interval); 

由於某些原因,此代碼不會針對標籤未聚焦的時間進行調整,但它在焦點位置時會按預期工作。
正如你可以看到這裏,我設置interval到100毫秒,並且我劃分資源/秒()由10

然而,當我設置interval至1秒(1000毫秒)和唐't將資源/秒分爲10,它始終按預期工作,並適當調整標籤未聚焦的時間。
可以使用全秒的間隔時,有人提供了一個解釋,爲什麼它的工作原理,但不會使用100間毫秒的間隔是什麼時候?

+0

行'startTime.getTime();'做什麼都沒有。它調用'.getTime()'函數,然後拋出返回的值。 – Pointy

+0

但是,當'interval = 1000'和'user.WPS'沒有被任何東西分割時,代碼就可以工作。如果'startTime.getTime();'不起作用,那麼代碼不能在兩種情況下都不起作用? – GeoDude

+0

否;這不是*錯誤*,它只是毫無意義。目前尚不清楚你期望該聲明做什麼。 – Pointy

回答

3

.getTime()獲取已創建時的Date對象中的時間或上次在日期對象中設置時間的時間。它沒有得到當前時間。

如果你想獲得當前時間,我經常用這個小功能:

function now() { 
    return new Date().getTime(); 
} 

或者,如果你不需要IE8的支持,那麼你可以使用Date.now()

此外,getTime()方法拉動超時的數據對象的,並從該方法調用返回它。如果你想使用它,你必須在撥打.getTime()之後將它放在某個地方。

+1

+1我個人依靠'Date.now'了很多東西 – naomik

+0

@naomik - 'Date.now()'需要IE9或填充工具。如果你可以放棄IE8的支持或願意安裝一個polyfill,那麼它的工作就很好。 – jfriend00

+0

我改變我的代碼,而不是使用'STARTTIME =新的日期()的;'和'startTime.getTime();',我用'VAR STARTTIME = Date.now();'和它完美的作品。謝謝。 – GeoDude