【问题标题】:Pause the game and then keep on [duplicate]暂停游戏然后继续[重复]
【发布时间】:2020-04-29 13:49:27
【问题描述】:

当我尝试暂停时,游戏画面只会冻结而不会暂停。我的意思是我希望游戏等待然后继续运行,而不是窗口不响应。

我试过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();
    }
}

【问题讨论】:

  • 这里没有足够的信息,但有一点很清楚:Thread.sleep() 不会神奇地做任何你期望“游戏暂停”做的事情。

标签: java pause


【解决方案1】:

通过将Thread.sleep 放在那个位置,您大概暂停了在窗口更改时重绘窗口的线程,这就是您执行此操作时屏幕冻结的原因。

暂停游戏的正确方法是使用一个指示暂停状态的变量(类似于boolean paused),并且在设置该布尔值时根本不更新游戏状态。

例如,如果你有代码说

foo.posX += foo.velocityX; // move the foo

然后你把它改成

if (!paused) {
  foo.posX += foo.velocityX; // move the foo
}

在像 Swing UI 这样的基于事件的系统中,您通常根本不想完全停止处理。您只想有选择地禁用某些行为。

【讨论】:

    猜你喜欢
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 2016-01-09
    • 2012-04-14
    • 1970-01-01
    相关资源
    最近更新 更多