摇摆动画暂停和恢复
Posted
技术标签:
【中文标题】摇摆动画暂停和恢复【英文标题】:Swing animation pause and resume 【发布时间】:2014-06-14 23:44:02 【问题描述】:我想增加暂停/恢复游戏的可能性。不幸的是,我的解决方案只暂停了游戏,但没有恢复它(当我单击恢复按钮时没有任何反应 - 图像仍然存在)。我还尝试在thread
上调用等待/通知方法,但它也不起作用 - 我得到了Exception in thread "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);
听众
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;
);
【问题讨论】:
【参考方案1】:使用javax.swing.Timer
调整动画速度。调用计时器的start()
和stop()
方法的典型控件被检查here。这个fleet simulation,它使用了这样一个Timer
,如果有兴趣也可以。
【讨论】:
以上是关于摇摆动画暂停和恢复的主要内容,如果未能解决你的问题,请参考以下文章
暂停和恢复 AnimateWithDuration 动画 ios