当我尝试暂停时,游戏的屏幕只会冻结,而不会暂停。我的意思是我希望游戏等待然后继续工作,而不是窗口不响应。
我尝试过Thread.sleep(1000);
if (Var.tropfeny > 760) {
Var.tropfeny = -10;
Var.tropfenx = Var.n1;
Var.playerPoints = 0;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
答案 0 :(得分:1)
通过将Thread.sleep
放置在该位置,您大概会暂停了线程,该线程会在窗口更改时重新绘制窗口,这就是为什么屏幕冻结的原因。
暂停游戏的正确方法是拥有一个指示暂停状态的变量(类似boolean paused
),并且只要设置了布尔值就根本不更新游戏状态。
例如,如果您有说过的代码
foo.posX += foo.velocityX; // move the foo
然后将其更改为
if (!paused) {
foo.posX += foo.velocityX; // move the foo
}
在基于事件的系统(如Swing UI)中,您通常根本不想完全停止处理。您只想有选择地禁用某些行为。