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