Swing - 将定时器堆叠在一起(这是不好的做法吗?)

时间:2015-12-03 19:53:02

标签: java swing timer

所以,基本上,我有一个拥有挥杆计时器的挥杆游戏。这是在计算机计算出它将要做什么之后等待,直到它转动,因为人类看起来不那么快。当该计时器执行时,下一轮开始,计算机AI轮到它。 事实上,当两个玩家都是计算机时,这理论上会将计时器无限制地叠加在一起,因为在计时器内部,(间接地)将再次(再次)再次调用相同的计时器。这会产生数据泄漏吗?如果是这样,我还能做些什么来实现同样的"等待"过程

所以,在伪代码中,这就是发生的事情:

public void computerTurn() {
    ...
    new Timer(1000, new ActionListener() {
        ....
        if (foo)
            computerTurn()
    }
}

1 个答案:

答案 0 :(得分:1)

你可以这样做:

ActionListener listener = (e) -> {
  if (!foo) { // if not foo, don't repeat anymore
    ((Timer)e.getSource()).stop();
  }
}

Timer timer = new Timer(1000, listener);
timer.setRepeats(true);
timer.start();