我正在玩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)方法,因此对于不同的事件我有多个计时器无法区分它们.其他人使用内联匿名类,但后来我无法将非最终参数传递给它.
对于这个用例,我是否缺少一些东西,我希望在一段时间后发生非常小的简单事情?(称为实例方法,变量集等)
谢谢!
写你自己的简单计时器怎么样?我会想到这样的事情:
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)
| 归档时间: |
|
| 查看次数: |
3519 次 |
| 最近记录: |