當遊戲開始時,獲取new Date().getTime()
的時間戳,並將其保存在一個變量中。定期(可以使用setInterval),將其與當前時間戳進行比較,並根據已經過多少時間採取行動。
我建議使用定時事件構建一個數組,並從定時器回調中檢查其元素。事情是這樣的:
var startTime = new Date().getTime();
// List of timed events
// (times are in milliseconds)
var events = [
{ time: 5000, text: "do something after 5 secs"},
{ time: 10000, text: "do something after 10 secs"},
{ time: 20000, text: "do something after 20 secs"}
];
// Check for events every second
setInterval(function() {
var timePassed = new Date().getTime() - startTime;
console.log("passed: " + timePassed + " milliseconds");
// Check all events
for(var i=events.length-1; i>=0; i--) {
// If an event has expired, remove it from the list,
// (and do whatever tou need to do)
if(events[i].time <= timePassed) {
// log the event text to the console
console.log(timePassed + "ms passed. " + events[i].text);
// remove from array
events.splice(i, 1);
}
}
}, 1000);
DEMO(打開你的瀏覽器控制檯查看輸出)。
我不得不使用一段時間(在4000到6000毫秒之間,而不是要求差值等於5000),但它工作。雖然我可以有很多時間戳嗎?一個是吃飯,另一個是爲了修飾,另一個是爲了生物本身的生活?恐怕他們會相互衝突。 – 2013-05-03 17:12:01
您只需要一個「參考」時間戳作爲開始時間,然後您就可以使用一組時間差異來觸發不同的操作。我用一個例子更新了答案。 – bfavaretto 2013-05-03 17:23:41