所以我正在写一个简单的2d javafx游戏,一个想法刚刚进入我的脑海。 我可以给一个布尔值(或任何类型的变量类型)一个选定的时间值。
如果可能,它会是什么样子
答案 0 :(得分:1)
为什么不是TimeLine
?
假设您希望在约2秒内更改String foo
字段,该字段用于myObject
变量引用的对象,该变量被声明为MyObject
。
myObject.setTemporaryValueForFooField("special value");
Timeline timeline = new Timeline(new KeyFrame(
Duration.millis(2000),
ae -> myObject.reuseOriginalValueForFooField()));
timeline.play();
setTemporaryValueForFooField(String)
复制当前实例中foo
字段的当前值,并为其分配临时值。
reuseOriginalValueForFooField()
在达到持续时间后,将foo
字段重新分配原始值。
答案 1 :(得分:0)
有几种方法可以做到这一点。您可以使用AtomicBoolean
,Timer
(一个TimerTask
)和一个简单的循环。像,
AtomicBoolean ab = new AtomicBoolean(true);
Timer t = new Timer(); // <-- The Timer
t.schedule(new TimerTask() {
@Override
public void run() {
ab.set(false);
}
}, TimeUnit.SECONDS.toMillis(5)); // <-- once in five seconds.
while (ab.get()) { // <-- while the boolean is true
System.out.println("It's true");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
t.cancel(); // <-- don't forget to end the Timer.
哪些打印&#34;它是真的&#34; 〜五次。