代码之家  ›  专栏  ›  技术社区  ›  dicle

我可以在定时器上停止定时器吗?

  •  0
  • dicle  · 技术社区  · 6 年前

    我有一个游戏方法,这个方法里面有定时器,只有在特定的情况下(如果下面的条件),我想停止定时器…但出于某种原因,它导致我崩溃。

    public model() {
    public game() {                    
                Timer timer = new Timer(50, new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        ....
                       //draw shapes on JFrame
    
                    if (model.Life == 0) { //specific condition
                        model.timer.stop(); //timer is making a crash here
                    }
                    repaint();
                    }
                   });
                timer.start();
            }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   camickr    6 年前

    计时器是ActEngEnter的来源,因此您可以这样做:

    if (your condition)
    {
        Timer timer = (Timer)e.getSource();
        timer.stop();
    }
    

    这样就不必担心为计时器保留实例变量。