Michael
Michael

Reputation: 13

Get javax swing timer value

I'm trying to program a game where I output the time (in milliseconds) the player has been alive. I thought I can just use a timer and gets it value pretty easily.

public class InvaderPanel extends JPanel implements KeyListener,ActionListener {

private int timealive; //in ms, max value 2147483647 --->3.5 weeks
private Timer timer=new Timer(30,this); //I think it(30) should be 1 right ?
/**
 * Create the panel.
 */
  public InvaderPanel() {
    addKeyListener(this);
    setFocusable(true);
    timer.start();
  }

@Override
public void actionPerformed(ActionEvent e) {
if(playerdead){
    timer.stop;
    timealive=timer.value; // <--- That's what I'm looking for.
    }
}
}

But here lies my problem: timer.value doesn't exist, so how do I get the value of my timer in milliseconds ?

Upvotes: 1

Views: 498

Answers (1)

Sergiy Medvynskyy
Sergiy Medvynskyy

Reputation: 11327

Here is my solution for you. You need to create timer which exactly ticks 1 time per second. And each tick when player is alive increase the value of timealive variable. I have another solution for you, but I think this should be enough.

public class InvaderPanel extends JPanel implements KeyListener,ActionListener {

  private int timealive; //in ms, max value 2147483647 --->3.5 weeks
  private Timer timer=new Timer(1000,this); // 1000ms = 1 second, but you 
                                            // can also set it to 30ms.
  /**
   * Create the panel.
   */
  public InvaderPanel() {
    addKeyListener(this);
    setFocusable(true);
    timer.start();
  }

  @Override
  public void actionPerformed(ActionEvent e) {
    if(playerdead){
      timer.stop();
      // here we can use timealive value
    } else {
      // timealive++; if you want to get the value in seconds
      //              in this case the timer delay must be 1000ms                  
      timealive += timer.getDelay(); // if you want to get the value in milliseconds
  }
}

Upvotes: 1

Related Questions