gpt4 book ai didi

Java:如何安排简单事件在 X 秒后发生?

转载 作者:行者123 更新时间:2023-12-04 21:29:42 24 4
gpt4 key购买 nike

我正在玩 Java,我在游戏中为 NPC 设置了一个类。当它们与另一个对象碰撞时调用一个方法:

public void collided_in_to(Entity ent) {

if(ent.equals(game.player)) {
this.speak = "Ouch!";
}

}

我想做的是在给定的秒数后将 this.speak 设置为 "",我认为这很简单。来自 Web 背景,我一直在寻找 Javascripts setTimeout() 的等价物。

我尝试过使用各种计时器片段,例如使用 Swing 计时器,但在那种情况下,似乎每个计时器都会调用相同的 public void actionPerformed(ActionEvent e) 方法,等等不同事件的多个计时器我无法区分它们。其他人使用内联匿名类,但我没有办法将非最终参数传递给它。

对于这个用例,我是否缺少某些东西,我希望在设定的时间后发生非常小的简单事情? (调用的实例方法、变量集等)

谢谢!

最佳答案

编写您自己的简单 Timer 怎么样?我会想到这样的事情:

public class Timer {

long start = 0;
long delay;

public Timer(long delay) {
this.delay = delay;
}

public void start() {
this.start = System.currentTimeMillis();
}

public boolean isExpired() {
return (System.currentTimeMillis() - this.start) > this.delay;
}

}

然后实例化Timer类作为类成员,当你想启动定时器时调用start()。

在你调用的方法中

public void collided_in_to(Entity ent) {

if(ent.equals(game.player)) {
if(this.timer.isExpired()) this.speak = "";
else this.speak = "Ouch!";
}
}

关于Java:如何安排简单事件在 X 秒后发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11900761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com