Я, честно говоря, не уверен, что заголовок полностью соответствует вопросу, но все же вот он. Я делаю простую игру на java, в которой инопланетные космические корабли падают с верхней части экрана, и если вы их не убьете, и они доберутся до нижней части экрана, космическая станция получит урон. Но всякий раз, когда космическая станция уничтожается, окно сообщения, которое должно сообщить игроку, что он умер, не перестанет появляться, оно просто продолжает появляться снова и снова. И в консоли я получаю сообщение об ошибке, которое не перестанет увеличиваться! Это код, который у меня есть для здоровья космической станции:
public class SpaceStation extends Entity {
public static int stationHealth = 100;
public SpaceStation(int x, int y) {
super(x, y);
}
public void update() {
}
public void draw(Graphics2D g2d) {
g2d.drawImage(ImageLocator.getSpaceStation(), 0, 595, null);
// HEALTH BAR
g2d.fillRect(5, 25, stationHealth, 10);
if(stationHealth <= 0) {
try{
JOptionPane.showMessageDialog(null, "You died on level "
+ GameFrame.level + ". Better luck next time!");
GameFrame.mainTimer.stop();
System.exit(0);
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e.getMessage());
System.exit(0);
}
}
}
public Rectangle getBounds() {
return new Rectangle(x, y, 600, 200);
}
}
По-видимому, строка, в которой находится ошибка, - это JOptionPane.showMessageDialog(null, "Вы умерли на уровне" Вот сообщение об ошибке:
at java.lang.Thread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.InternalError: The current process has used all of its system allowance of handles for Window Manager objects.
at sun.awt.windows.WToolkit.eventLoop(Native Method)
at sun.awt.windows.WToolkit.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.InternalError: The current process has used all of its system allowance of handles for Window Manager objects.
Спасибо за ваше время.
actionListener
изTimer
.ifGameOver()
возвращаетtrue
, останавливает таймер и вызываетassessWinner()
, что может вызвать диалоговое окно «У вашего персонажа 0 здоровья» (намного лучше, чем «Попался, сосунок»). - person Andrew Thompson   schedule 21.08.2012