2014-02-21 8 views
-3

Мне нужен таймер для моей игры ... Я много искал, но не повезло.Мне нужен таймер Java

помогите пожалуйста.

это мое событие мыши:

public void mouseClicked(MouseEvent e) { 

    mouseX = e.getX(); 
    mouseY = e.getY(); 

    if(shot == false){ 
     Ink = 0; 
    } 

    if(ready == true){ 
    shot = true; 
     // I need a timer here to wait a second and then stop shooting. 
    } 

} 
+1

К OP: поиск в 'Качели Timer' и счастья будет улучшаться. Если вам по-прежнему нужна помощь после проверки учебника, расскажите нам больше о том, что вы пытаетесь сделать своим таймером, и о том, как ваш код не работает. –

+0

@HovercraftFullOfEels Я видел это после. Я удалил комментарий. –

ответ

3

Опять же, использовать Swing-таймер:

// code not compiled nor tested. It was typed free-hand. 
// so it was not meant to be copy, pasted and used, but rather to show you 
// the idea. 
public void mouseClicked(MouseEvent e) { 
    mouseX = e.getX(); 
    mouseY = e.getY(); 

    // don't use if (shot == false). Instead do: 
    if (!shot) { 
    Ink = 0; 
    } 

    // likewise, no need to use if (ready == true). Instead do: 
    if (ready) { 
    shot = true; 

    // turn off your ability to shoot here by setting a boolean. 
    ableToShoot = false; 
    // start a Swing Timer that does not repeat 
    // in the Timer turn back on the ability to shoot by setting a boolean 
    Timer swingTimer = new Timer(TIMER_DELAY_TIME, new ActionListener() { 
     public void actionPerformed(ActionEvent evt) { 
     // allow shots here 
     ableToShoot = true; 
     } 
    }); 
    swingTimer.setRepeats(false); 
    swingTimer.start(); 
    } 
} 

Примечания:

  • Не используйте Thread.sleep(...), если вы не хотите, чтобы положить ваши весь GUI для сна, так как это будет спать поток событий Swing.
  • Не используйте java.util.Timer. Модель Threading Swing диктует, что почти все вызовы качаний выполняются в потоке событий Swing. Таймер Swing построен для этого, чтобы быть уверенным, что все вызовы в таймере вызываются в EDT, потоке событий Swing. Java.util.Timer этого не делает, и это приведет к тому, что иногда очень сложно отлаживать ошибки потоков, худшие ошибки.
  • The Swing Timer Tutorial link.
  • The Swing event threading model tutorial link
+0

Спасибо U! Но есть проблема с TIMER_DELAY_TIME, (Создайте константу TIMER_DELAY_TIME ...) – user2975915

+0

@ user2975915: так что тогда создайте свою константу. В чем проблема? –

Смежные вопросы