基本上,我只想要一个定时器,在每一步之间“停止”一个功能2秒钟。我不希望它调用任何其他任务/方法,我只是想让它暂停执行。这样做的最佳方法是什么?
这是一个基于回合的战斗序列,其中每个回合的结果输出到JLabel(转向1:角色A击中角色B进行8次伤害。等待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
答案 0 :(得分:1)
Basically, I just want a timer that ''stops'' a function for 2 seconds between each step.
这不是Timer的工作方式。计时器不会停止处理。 Timer会生成一个您可以处理的事件。
你想要一个计时器,每次它触发时你都会调用另一个步骤。
所以你需要保留一个柜台。每次计时器触发时,您都会测试计数器的值并调用相应的步骤,然后递增计数器。
然后在达到指定的步数时停止计时器。