如何使 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();
我正在用 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();