使用Java Swing Timer只是为了延迟一个函数

时间:2017-08-08 14:59:54

标签: java swing timer

基本上,我只想要一个定时器,在每一步之间“停止”一个功能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

1 个答案:

答案 0 :(得分:1)

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

这不是Timer的工作方式。计时器不会停止处理。 Timer会生成一个您可以处理的事件。

你想要一个计时器,每次它触发时你都会调用另一个步骤。

所以你需要保留一个柜台。每次计时器触发时,您都会测试计数器的值并调用相应的步骤,然后递增计数器。

然后在达到指定的步数时停止计时器。