尝试每 5 秒执行一次操作

Trying to make a action get called upon once every 5 seconds

我正在尝试制作一个 class 调用计时器。当我的角色进入敌人区域时,计时器 class 应该被调用。计时器 class 应该每 5 秒将角色的生命值减少 10 点。我尝试了多个不同的计时器,但我似乎无法正确使用它们中的任何一个。当我尝试它删除健康但它并没有只做一次,它一直重复它直到健康栏不在屏幕上。这是我的代码:

class Timer {
    g = new gubbe();
    gubbe g;
    Timer timer = new Timer(3000, new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent arg0) {
            g.RemoveHealth();
        }
    });
    timer.setRepeats(false); 
    timer.start();
 }

这就是我到目前为止的想法。 如果需要更多代码,请询问。

这里有一个 class,您可以用它来为您的活动计时:

class Delay {
  protected int limit;

  public Delay() {limit = millis();}
  public Delay (int l) {
    limit = millis() + l;
  }

  public boolean expired () {
    if (millis() > limit) { return true; }

    return false;
  }
}

要每 5 秒检查一次,您必须像这样初始化它:

Delay _delay;

void setup() {
  _delay = new Delay(5000);
}

void draw() {
  if (_delay.expired()) {
    //do something
    _delay = new Delay(5000);
  }
}

5000是以毫秒为单位的,所以就是5秒。如果您想检查 1 秒的延迟,则改为 1000。我们在延迟完成后重新初始化它,以便它在 5 秒后再次触发。

玩得开心!