.getTime() 是如何工作的?
How does .getTime() work?
为什么这个语句有效?我试图以每秒 20-25 帧的速度更新我的屏幕。我明白为什么会这样 我只是不明白它是如何工作的。如果我们采用 new Date().getTime() - lastLoopRun,为什么每次结果都不为零,因为 lastLoopRun 等于 new Date().getTime()?我知道这与变量从 0 开始这一事实有关,但这对我来说意义不大。
var lastLoopRun = 0;
function loop() {
if (new Date().getTime() - lastLoopRun > 40) {
handleControls();
showSPrites();
lastLoopRun = new Date().getTime();
}
setTimeout('loop();', 2);
}
勾选lastLoopRun
时,还没有更新到当前时间
因此在循环开始时,它仍然具有前一个循环的旧值,或者 0。
如果在循环开始时更新,就像你说的,它永远是0。
new Date().getTime()
returns 1970 年 1 月 1 日 00:00:00 UTC 与当前时间之间经过的毫秒数。所以每1秒增加1000
function loop() { ...; setTimeout('loop();', 2);}
每 2 毫秒调用 loop()
。
loop() -> elapsed about 40 ms after previous action? -> after 2 ms
-> loop() -> elapsed about 40 ms after previous action? -> after 2 ms
-> loop() -> elapsed about 40 ms after previous action? -> after 2 ms
-> loop() -> OK! elapsed -> do action -> update timestamp -> after 2 ms
-> loop() -> elapsed about 40 ms after previous action? -> after 2 ms
-> ...
为什么这个语句有效?我试图以每秒 20-25 帧的速度更新我的屏幕。我明白为什么会这样 我只是不明白它是如何工作的。如果我们采用 new Date().getTime() - lastLoopRun,为什么每次结果都不为零,因为 lastLoopRun 等于 new Date().getTime()?我知道这与变量从 0 开始这一事实有关,但这对我来说意义不大。
var lastLoopRun = 0;
function loop() {
if (new Date().getTime() - lastLoopRun > 40) {
handleControls();
showSPrites();
lastLoopRun = new Date().getTime();
}
setTimeout('loop();', 2);
}
勾选lastLoopRun
时,还没有更新到当前时间
因此在循环开始时,它仍然具有前一个循环的旧值,或者 0。
如果在循环开始时更新,就像你说的,它永远是0。
new Date().getTime()
returns 1970 年 1 月 1 日 00:00:00 UTC 与当前时间之间经过的毫秒数。所以每1秒增加1000
function loop() { ...; setTimeout('loop();', 2);}
每 2 毫秒调用 loop()
。
loop() -> elapsed about 40 ms after previous action? -> after 2 ms
-> loop() -> elapsed about 40 ms after previous action? -> after 2 ms
-> loop() -> elapsed about 40 ms after previous action? -> after 2 ms
-> loop() -> OK! elapsed -> do action -> update timestamp -> after 2 ms
-> loop() -> elapsed about 40 ms after previous action? -> after 2 ms
-> ...