2017-08-08 94 views
-1

基本上,我只想在每一步之間有一個「停止」一個函數2秒的定時器。我不希望它調用任何其他任務/方法,我只是希望它暫停執行。這樣做的最好方法是什麼?第二回合:角色B的攻擊未命中A角色A:角色A擊中角色B,造成8點傷害。等待2秒回合2:角色B的攻擊未命中角色A. 間隔2秒等)使用Java Swing Timer只是爲了延遲一個函數

//Battle///////////////////////// 

    int aDmg = aAttackPower - d.def; 
    double aHitChance = aHitRate - dAvoidRate; 
    String sound; 

    //Turn 1 

    if (aHitChance >= rngs[rngsIndex]) { 

     if (aCritRate >= rngs[rngsIndex]) { 
      aDmg *= 3; 
      sound="crit.wav"; 
      t.print("Critical Hit! " + a.name + " attacks " + d.name + " for " + aDmg + " damage!"); 
      rngsIndex++; 
     } else { 
      sound="hit.wav"; 
      t.print(a.name + " attacks " + d.name + " for " + aDmg + " damage!"); 
      rngsIndex++; 
     } 

     d.damageHp(aDmg); 
     rngsIndex++; 
    } else { 
     sound = "miss.wav"; 
     t.print(a.name + " has missed."); 
     rngsIndex++; 
    } 

    playSound(sound); 

    //Timer 2 seconds <---- Timer would go here 
    //Turn 2 

回答

1

Basically, I just want a timer that ''stops'' a function for 2 seconds between each step.

這不是一個定時器的工作方式。計時器不停止處理。一個Timer產生一個你可以處理的事件。

您需要一個計時器,以便每次啓動時調用不同的步驟。

所以你需要保留一個計數器。每次定時器啓動時,都會測試計數器的值並調用相應的步驟,然後增加計數器。

然後,當達到指定的步數時停止定時器。