2013-10-16 142 views
0

我是新來的Javascript,並決定我的項目進一步學習和開發是通過製作視頻遊戲和我目前的問題是與計時器系統。Javascript:如何停止計時器並啓動計時器

這是情況。你的角色有能量,當你使用技能時會消耗掉。 (例如:X技能的-5點能量損失)。我爲能量再生功能創建了一個計時器,它可以讓你每秒鐘消耗1點能量。

現在我有這個系統的兩個問題。第一個問題是,當我的計時器由於達到CAP能量而關閉時,它不會再次開始再生,因此一旦開始排空後,如何讓計時器繼續運行?

我的第二個問題是我瞭解到,當我實際使用技能時,5個能量點正在計算成本,這不會重置時間。 (例如:31 .. 32 ..(使用技能-5能量)27 .. 33 .. 34 ...)所以基本上它不會記錄定時器上的-5能量。

這是我的代碼。

var count = character.energy; 
var counter = setInterval(timer, 1000); 

function timer() { 
    count += characterstats.energyregen; 
    if (count >= 35){ 
    clearInterval(counter); 
    } 

    document.getElementById("energy").innerHTML = count; 
    character.energy = count; 
} 

回答

0

爲什麼不在使用技能時添加對計時器狀態的檢查?當使用技能時,你知道能量不是最大的 - 如果一項技能尚未運行,則繼續開始計時。

function useSkill(skill) { 
    if (!isTimerRunning) { 
     timer.Start(); 
    } 
    invokeSkillUseMethodHere(); 
} 
0

1)添加其他條件,你如果,即(if count >= 35 && timerRegen == false),然後在你的技能末尾添加timerRegen = true或類似的規定 - 具體是黑暗的,因爲我不明白你的整個邏輯只看到你的計時器

2)你需要把時間變量放在定時器函數的範圍之外,以便技能改變它。

E--謝謝你給用戶下面指出的錯誤

+1

'timerRegen = FALSE'應該是'timerRegen == FALSE'或只是'!timerRegen'。你現在擁有的是分配給它的錯誤,並且不起作用。 – jfriend00