2017-08-08 7 views
-1

基本的には、各ステップの間に2秒間機能を停止するタイマーが必要です。他のタスクやメソッドを呼びたくない場合は、実行を一時停止するだけです。これを行う最善の方法は何ですか?Javaスイングタイマーを使用して機能を遅らせる

それは、(1ターン毎ターンの結果はJLabelのに出力され、ターンベースの戦闘シーケンスのためです:文字Aは8ダメージの文字Bを打つ待ち時間2秒2を回し:キャラクタBの攻撃は、文字Aをミスは待つ2秒など)

//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.

。タイマーは処理を停止しません。タイマーは、処理できるイベントを生成します。

あなたは別のステップを起動するたびに起動するようにタイマーを設定します。

カウンタを保持する必要があります。タイマーが起動するたびに、カウンタの値をテストし、適切なステップを起動した後、カウンタをインクリメントします。

指定したステップ数に達すると、タイマーを停止します。

関連する問題