如何使 gif 动画在 JavaFX 中的特定时间可见?

How to make gif animation visible for a specific time in JavaFX?

我正在用 JavaFX 制作一个简单的游戏,我想在角色战斗时显示动画。当我单击 'attack' 按钮时,我想显示 'fight.gif' 动画。当不点击任何东西时,我想要显示另一个 'waitForAction.gif' 。问题是我希望此 'fight.gif' 显示特定时间,因此可以在 'waitForAction.gif' 再次显示之前看到整个动画。

所以我的问题是:

GIF 是个好主意吗?如果是,如何控制它们? 如果没有,如何使这些动画起作用?

如果您在理解上有问题,我可以 post 我想要达到的图片。

使用 Timeline。例如。要显示 gif 2 秒,你可以这样做:

Timeline timeline = new Timeline(
    new KeyFrame(Duration.ZERO, e -> { /* display fight.gif */}),
    new KeyFrame(Duration.seconds(2), e -> { /* hide fight.gif */})
);
timeline.play();

其工作方式是时间线由一系列关键帧组成。每个关键帧都有一个与其相关联的时间(时间线上的时间点),在本例中,还有一个要在该时间调用的动作。所以在这种情况下,时间线启动后0秒,显示fight.gif,时间线启动2秒后,fight.gif隐藏。时间线是通过调用其 play() 方法启动的。

一般来说,任何时候您希望 UI 在特定时间或在特定时间做某事,某种动画可能会提供一个简单的解决方案。

您可以使用时间轴给出间隔持续时间

                            Timeline timeline = new Timeline();

                            timeline.getKeyFrames().add(new KeyFrame(javafx.util.Duration.seconds(3), (ActionEvent event1) -> {

                                try {
                                 //put your code here
                                } catch (Exception exception) {

                                }

                            }));
                            timeline.play();