Java Swing动画暂停并恢复
我想增加暂停/恢复游戏的可能性。不幸的是,我的解决方案只会暂停游戏,但不会继续游戏(当我单击“恢复”按钮时,什么也没有发生-图像仍处于静止状态)。我还尝试在Java Swing动画暂停并恢复,java,swing,animation,game-loop,Java,Swing,Animation,Game Loop,我想增加暂停/恢复游戏的可能性。不幸的是,我的解决方案只会暂停游戏,但不会继续游戏(当我单击“恢复”按钮时,什么也没有发生-图像仍处于静止状态)。我还尝试在线程上调用wait/notify方法,但它也不起作用-我在线程“AWT-EventQueue-0”java.lang.IllegalMonitorStateException中得到了异常。暂停/恢复的最佳解决方案是什么 游戏循环 public void run() { init(); long startTime;
线程上调用wait/notify方法,但它也不起作用-我在线程“AWT-EventQueue-0”java.lang.IllegalMonitorStateException中得到了异常。暂停/恢复的最佳解决方案是什么
游戏循环
public void run() {
init();
long startTime;
long reTime;
long waitTime;
while (running) {
startTime = System.nanoTime();
int CarPosX = car.zwrocPolozenieX();
int CarPosY = car.zwrocPolozenieY();
update(b, CarPosX, CarPosY);
render(b);
//draw();
repaint();
if(b<4390) {
b=b+szybkoscMapy;
}
reTime = System.nanoTime() - startTime;
waitTime = targetTime - reTime/100000000;
try {
Thread.sleep(waitTime);
}
catch(Exception e) {
}
}
}
public void init() {
if(thread == null) {
thread = new Thread(this);
thread.start();
}
b=0;
running = true;
image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
g = (Graphics2D) image.getGraphics();
map = new Map(levelNumber);
car = new Car(map);
car.setxpos(338);
car.setypos(150);
}
用于调整动画的速度。将检查调用计时器的start()
和stop()
方法的典型控件。如果有兴趣,也可以使用这种计时器。用于调整动画的速度。将检查调用计时器的start()
和stop()
方法的典型控件。如果有兴趣,也可以使用这种计时器
pause_button.addActionListener( new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
bp.running = false;
}
});
resume_button.addActionListener( new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
bp.running = true;
}
});