Java:如何在X秒后计算简单事件的时间?

Run*_*ble 2 java

我正在玩Java,我在游戏中为自己的NPC上课.当一个方法与另一个对象发生碰撞时会调用它们:

public void collided_in_to(Entity ent) {

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

}
Run Code Online (Sandbox Code Playgroud)

我想做的事,这是我想通将是简单的,被设置this.speak""几秒钟的一定量之后.来自网络背景,我正在寻找相当于Javascripts setTimeout().

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

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

谢谢!

Don*_*Don 5

写你自己的简单计时器怎么样?我会想到这样的事情:

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;
}

}
Run Code Online (Sandbox Code Playgroud)

然后将Timer类实例化为类成员,并在想要启动计时器时调用start().

在你的方法中你打电话

public void collided_in_to(Entity ent) {

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