gpt4 book ai didi

java - 时间轴不适用于 'some' 持续时间

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:08:52 25 4
gpt4 key购买 nike

我有这个工作代码:

Duration duration = Duration.millis(1000 / 30.0);
videoTick = new Timeline(new KeyFrame(duration, new EventHandler<ActionEvent>() {
public void handle(ActionEvent actionEvent) {
System.out.println("tick");
}
}));
videoTick.setCycleCount(Animation.INDEFINITE);
videoTick.playFromStart();

非常好。但是一旦我稍微改变了持续时间:

Duration duration = Duration.millis(1000 / 30.1);

现在不行了!我是疯了还是 JavaFx 完全坏了?如何解决?

编辑:我知道这个错误看起来没有任何意义,但它就发生在我面前。我提供了最少的代码来重现它。

import javafx.animation.*;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.util.Duration;
import javafx.stage.Stage;

public class Ticker extends Application {
private Timeline videoTick;

public static void main(String[] args) {
launch(args);
}

@Override
public void start(final Stage primaryStage) {
Duration duration = Duration.millis(1000 / 30.0);
videoTick = new Timeline(new KeyFrame(duration, new EventHandler<ActionEvent>() {
public void handle(ActionEvent actionEvent) {
System.out.println("Tick");
}
}));
videoTick.setCycleCount(Animation.INDEFINITE);
videoTick.playFromStart();
}
}

然后将 30.0 更改为 30.1

编辑 2:好的,这是一个(部分)解决方法:Timeline#play()Timeline#playFromStart() 不工作时工作。(EDIT 4 :抱歉,这不行,显然我太累了。)

但是问题并没有解决:如果你真的需要playFromStart怎么办?更重要的是,为什么它不适用于 1000/30.1

编辑 3:

我在 OSX 10.8 + Java/JavaFx 1.7.0_17 和 Java/JavaFx 1.7.0_21 上复制了它。

最佳答案

Java 7 漏洞

这是 Java 7 中 JavaFX 的一个错误。我创建了 RT-31027在 JavaFX 问题跟踪器中跟踪此问题。

在从命令行编译和运行时,我能够使用 Java 1.7.0_21、OSX 10.8 重现此(无刻度输出)。

很抱歉之前误报它在 Java 1.7.0_21 中工作(我在我的 IDE 中使用 Java 版本切换时出现了设置错误)。

已在 Java 8 中修复

它在 Java8b92 中确实有效(输出刻度),因此该错误似乎已在以后的 JavaFX 构建中得到修复。 Java 8 early access builds are available .因此,作为解决方法,您可以使用 Java 8。

替代实现

对于经常发生的这类动画,您还可以考虑使用 AnimationTimer相反。

更新

RT-31027 ,我为跟踪此问题而创建的问题跟踪器记录已在 8.0 中作为固定关闭,并附有评论“只有关键修复被反向移植到 2.2,因此将其作为固定关闭”。

关于java - 时间轴不适用于 'some' 持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17004022/

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