当前位置: 首页 > 知识库问答 >
问题:

在Java中,如何在两行代码之间创建延迟?[副本]

邓开济
2023-03-14

我正在用java重新创建经典的街机游戏《太空入侵者》。我的问题是在杀死敌人后处理精灵时出现的。因为死亡精灵是一个敌人可以拥有的精灵之一,所以我基本上要做的是改变显示的精灵,然后移除敌人的物体。有没有办法让精灵显示一秒钟左右,然后移除敌人的物体?我也愿意用其他方法来做类似的事情,因为它可能没有我想象过的其他方法那么有效。

编辑:我以前应该提到这个,但是任何涉及睡眠线程的事情都会导致整个游戏延迟,这是行不通的。

// stuff detecting collision between missile and enemy
missiles.remove(0);
enemies.get(j).loadImage(2); // loads death sprite for enemy that got hit
// one second delay
enemies.remove(j);

编辑:我想出了解决问题的办法。使用swing Timer类,我能够在显示死亡精灵后创建延迟,然后移除敌人。在有类似问题的人需要时发布此信息。

Timer timer = new Timer(600, new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        enemies.remove(remove); // The enemy is removed when after the allotted delay occurs when timer.start() is called
    }
});

// final code after changes
missiles.remove(0);
enemies.get(j).loadImage(2);
remove = j;
timer.setRepeats(false); // makes it so that only one enemy is removed
timer.start(); // after the delay the enemy is removed, enough time for the death sprite to be shown for the allotted delay

共有2个答案

宇文金鑫
2023-03-14

有多种选择:

线程类中的睡眠()方法(捕获中断异常):

Thread.sleep(1000);

java.util.concurrent包的TimeUnit枚举中的睡眠()方法:

TimeUnit.SECONDS.sleep(1);
TimeUnit.MINUTES.sleep(1);
仇建茗
2023-03-14

线程。睡眠(1000) 应该为您做这件事。

 类似资料:
  • 该程序的工作原理如下: 我按名称查找元素 我遇到的问题是3发生得太快,程序无法定位元素。我想我需要在3中放一个延迟或其他东西,当元素被找到时激活4。如果有帮助的话,我也在使用硒。 我没有尝试过任何东西,因为我不知道我能做什么,因为我对这一点非常陌生。 代码如下:

  • 问题内容: 我做了一个二十一点游戏,我想让AI播放器在两张牌之间暂停一下。我尝试仅使用Thread.sleep(x)进行尝试,但这会使冻结,直到AI播放器拿走了他所有的卡。我知道Swing不是线程安全的,所以我看了Timers,但是我不明白如何使用它。这是我当前的代码: BTW,hit(); 方法更新GUI。 问题答案: 好吧,下面的代码显示了一个带有JTextArea和JButton的JFram

  • 问题内容: 我想暂时暂停我的应用。换句话说,我希望我的应用执行代码,但是在某个时候暂停4秒钟,然后继续执行其余的代码。我怎样才能做到这一点? 我正在使用Swift。 问题答案: 如果要从UI线程调用该方法,则可以考虑使用或调度计时器,而不是进行睡眠(这会锁定您的程序)。 但是,如果您确实需要延迟当前线程: 这使用UNIX中的功能。

  • 我想在我的小部件构建完成后,在一定的延迟后执行一个函数。在Flatter中,这样做的惯用方法是什么? 我试图实现的是:我想从默认的FlutterLogo小部件开始,然后在一段时间后更改其样式属性。

  • 我正在尝试用Java做一些事情,我需要在while循环中等待/延迟几秒钟。 我想构建一个step sequencer,我是Java新手。有什么建议吗?

  • 我想和JDA做一个不和谐的赠品机器人。对我来说,在文件或其他地方保存条目是没有问题的,但是如何在3天后选择获胜者呢?它听起来不是很有效,使用定时器任务或保存到一个文件中的日期,并检查它每发送消息? 你不需要给我一个代码示例,但是一个简短的解释就足够了