是否在一定时间内给变量赋值(java)

是否在一定时间内给变量赋值(java),java,javafx,Java,Javafx,所以我写了一个简单的2d javafx游戏,我的脑子里突然有了一个想法。 我可以给一个布尔值(或任何变量类型)一个选定时间的值吗 如果可能的话,它看起来会是什么样子?为什么不是一个时间线呢 假设您希望在大约2秒钟内更改声明为myObject的myObject变量引用的对象的String foo字段 myObject.setTemporaryValueForFooField("special value"); Timeline timeline = new Timeline(new KeyFram

所以我写了一个简单的2d javafx游戏,我的脑子里突然有了一个想法。 我可以给一个布尔值(或任何变量类型)一个选定时间的值吗


如果可能的话,它看起来会是什么样子?为什么不是一个时间线呢 假设您希望在大约2秒钟内更改声明为
myObject
myObject
变量引用的对象的
String foo
字段

myObject.setTemporaryValueForFooField("special value");
Timeline timeline = new Timeline(new KeyFrame(
        Duration.millis(2000),
        ae -> myObject.reuseOriginalValueForFooField()));
timeline.play();
setTemporaryValueForFooField(String)
复制当前实例中
foo
字段的当前值,并为其分配临时值。

reuseOriginalValueForFooField()
在达到持续时间时,使用原始值重新分配
foo
字段。

有几种方法可以做到这一点。可以使用a、a(a)和简单的循环。像

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.
AtomicBoolean ab=新的AtomicBoolean(真);
计时器t=新计时器();//这是C#但应该给你一些想法。