В моей платформенной игре у меня есть таймер качания, который тикает следующий метод каждые 17 миллисекунд. Именно здесь я запускаю различные события, которые мне нужно запустить. Мой план состоял в том, чтобы спать таймер на 1 секунду всякий раз, когда игрок умирал.Как спать/ждать Java Swing Timer
Моя проблема заключается в том, что у меня нет четкого понимания того, как спать таймер разворота. Каждый пример, на который я смотрю, включает использование Thread, который не является тем, что я делаю. Когда я делаю следующее, я получаю ошибку IllegalMonitorStateException.
public void actionPerformed(ActionEvent e)
{
if (!louis.isDead)
{
if (louis.right)
{
louis.moveR();
}
if (louis.left)
{
louis.moveL();
}
if (!louis.left && !louis.right)
louis.friction();
louis.gravity();
louis.checkCol(charMap, mapX, mapY);
mapX -= louis.moveX();
mapY -= louis.moveY();
louis.checkDeath(charMap, mapX, mapY);
}
else
{
try {
time.wait(1000);
} catch (InterruptedException e1) {e1.printStackTrace();}
mapX = initMapX;
mapY = initMapY;
louis = new Player(spawnX, spawnY);
}
repaint();
}
Заранее спасибо
'Каждый пример, который я смотрю на предполагает использование таймера внутри Thread' - I Я этого никогда не видел. Таймер вообще не имеет отношения к Thread. Начните с чтения раздела из учебника Swing [Как использовать таймеры Swing] (http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html) для рабочего примера. – camickr