gpt4 book ai didi

java - 如何让图像每n秒改变一次

转载 作者:行者123 更新时间:2023-12-01 19:31:38 24 4
gpt4 key购买 nike

这是我的代码

    ImageView contImg = new ImageView();
Timeline timeline = new Timeline(
new KeyFrame(javafx.util.Duration.ONE, new KeyValue(contImg.imageProperty(), cartas.get(0).getImg())),
new KeyFrame(javafx.util.Duration.ONE, new KeyValue(contImg.imageProperty(), cartas.get(1).getImg())),
new KeyFrame(javafx.util.Duration.ONE, new KeyValue(contImg.imageProperty(), cartas.get(2).getImg())),
new KeyFrame(javafx.util.Duration.ONE, new KeyValue(contImg.imageProperty(), cartas.get(3).getImg())));

timeline.play();

但问题是图像没有改变(cartas 是一个 Arraylist,其中每个购物车都有一个图像属性)

最佳答案

您使用时间线更改图像的图像属性的方法是正确的,但您的持续时间是错误的。

您使用 Duration.ONE ,即:

A Duration of 1 millisecond.

所以这并不是您希望的每 N 秒一次。

要获取每 n 秒,请使用:

Duration.seconds(n)

另一个问题是您将关键帧设置为在同一持续时间内触发,但这不是您想要的。关键帧的持续时间基于整个时间线周期所耗时,而不仅仅是自最后一个关键帧以来的时间。

因此,将它们放在一起,您可以获得以下代码来执行您想要的操作:

final int NUM_FRAMES = 4;
final int PAUSE_BETWEEN_FRAMES = 5;

ImageView imageView = new ImageView();
Timeline timeline = new Timeline();
List<Image> images = List.of(/** initialize your images here **/);

for (int i = 0; i < NUM_FRAMES; i++) {
timeline.getKeyFrames().add(
new KeyFrame(
Duration.seconds(i * PAUSE_BETWEEN_FRAMES),
new KeyValue(imageView.imageProperty(), images.get(i))
)
);
}

timeline.setCycleCount(Timeline.INDEFINITE);
timeline.play();

List.of(elements..)是用于初始化列表的 Java 9 构造,如果您不使用 Java 9+,请使用其他构造。

关于java - 如何让图像每n秒改变一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59656579/

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