2014-02-19 35 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