【问题标题】:Using a Java Swing Timer just to delay a function使用 Java Swing Timer 只是为了延迟一个函数
【发布时间】:2017-08-08 14:59:53
【问题描述】:

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

【问题讨论】:

    标签: java swing timer


    【解决方案1】:

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

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

    您需要一个计时器,这样每次触发时您都会调用不同的步骤。

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

    当您达到指定的步数时,您将停止计时器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-11
      • 2013-03-18
      • 2019-11-27
      • 2017-04-08
      • 2017-01-27
      • 1970-01-01
      • 2016-03-22
      相关资源
      最近更新 更多