2015-12-19 5 views
0

Я создаю видеоигру, в которой используется большое количество таймеров, которые я хотел бы приостановить, если пользователь нажимает кнопку «Пауза». Если пользователь затем нажимает кнопку «Продолжить», я хотел бы либо перезапустить их, либо, если необходимо, создать новые таймеры с тем, что осталось от исходного.Как получить оставшееся время на таймере в Java?

Есть ли способ получить время, оставшееся на Java-таймере, до того, как оно обычно истекает?

Спасибо.

ответ

1

Вы не можете получить прошедшее время из java.util.Timer или javax.swing.Timer. Для одного из ваших пунктов javax.swing.Timer имеет метод stop(), который можно использовать для приостановки таймера, а метод start() можно использовать для его перезапуска.

Если вы не зависите от взаимодействия потоков, есть другие классы, у которых есть запрошенные вами функции.

В библиотеке guava есть класс секундомера, который делает то, что вы хотите.

http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/base/Stopwatch.html

Spring имеет один тоже:

http://docs.spring.io/spring/docs/2.0.x/api/org/springframework/util/StopWatch.html

+0

Так что я думаю, с этим я бы начать StopWatch после установки таймера, и когда я хочу, чтобы «приостановить» таймер, сделать некоторую математику, чтобы вычислить оставшееся время, пока таймер не исчезнет? Будет ли это быть точным? – user1104028

+0

Вы полагаетесь на TimerTasks на что-то? Было бы проще объединить простые потоки с секундомером, чем пытаться совместить два –

+0

Да, все мои движения игрового объекта контролируются java.swingx.Timers, который синхронизирует события с очередью отправки событий. Желание Java Swing Timers поддерживало это. Хотелось бы избежать того, чтобы что-то придумать. – user1104028

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