JavaFX GIF 没有播放完整的 GIF
JavaFX GIF not playing the full GIF
我正在尝试在 JavaFX 的场景中显示 GIF,我已将其显示在场景中并播放,但它在播放完整 GIF 之前循环回到开头。 GIF 是 216 帧所以大约 30 秒长。这就是它不播放全部内容的原因吗?或者有什么办法让它播放完整的东西吗?
rules.setOnAction(new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent e) {
Stage rulesWindow = new Stage();
Pane r_2 = new Pane(tutorialView);
Scene sc = new Scene(r_2,width/2,height/2);
rulesWindow.setScene(sc);
tutorialView.setFitWidth(width/2);
tutorialView.setFitHeight(height/2);
rulesWindow.show();
}
});
我在方法外实例化了tutorialView
,所以在这部分代码中没有看到。
这是完整的GIF
我无法上传播放的内容,因为文件太大,但如果您观看完整的 GIF,它会在第一次出现绿色圆圈的地方停止
我尝试使用 JRE Temurin 16.0.2(来自 adoptopenjdk 的 java 运行时)和 JavaFX 17.0.0.1 在 Windows PC 上播放 gif 并且有效(一直播放).
然后我在 JavaFX 16 上尝试了 运行 相同的测试应用程序,它在播放整个动画之前开始循环(在动画中开始出现绿点之前)。
所以 JavaFX 16 复制了 Michelle 描述的问题,而 JavaFX 17 修复了由于 bug fix(正如 Jose 预测的那样)引起的问题。
因此,如果使用长 运行 gif,请确保您使用的是 JavaFX 17+。
测试代码(使用问题中的gif):
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class GifTest extends Application {
@Override
public void start(Stage stage) {
Scene scene = new Scene(
new StackPane(
new ImageView(
GifTest.class.getResource(
"game.gif"
).toExternalForm()
)
)
);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
如果您想更好地控制播放,或者如果您必须使用较早的 JavaFX 版本且 gif 播放有问题,您可以 . See also this sample sprite based playback。
我正在尝试在 JavaFX 的场景中显示 GIF,我已将其显示在场景中并播放,但它在播放完整 GIF 之前循环回到开头。 GIF 是 216 帧所以大约 30 秒长。这就是它不播放全部内容的原因吗?或者有什么办法让它播放完整的东西吗?
rules.setOnAction(new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent e) {
Stage rulesWindow = new Stage();
Pane r_2 = new Pane(tutorialView);
Scene sc = new Scene(r_2,width/2,height/2);
rulesWindow.setScene(sc);
tutorialView.setFitWidth(width/2);
tutorialView.setFitHeight(height/2);
rulesWindow.show();
}
});
我在方法外实例化了tutorialView
,所以在这部分代码中没有看到。
这是完整的GIF
我无法上传播放的内容,因为文件太大,但如果您观看完整的 GIF,它会在第一次出现绿色圆圈的地方停止
我尝试使用 JRE Temurin 16.0.2(来自 adoptopenjdk 的 java 运行时)和 JavaFX 17.0.0.1 在 Windows PC 上播放 gif 并且有效(一直播放).
然后我在 JavaFX 16 上尝试了 运行 相同的测试应用程序,它在播放整个动画之前开始循环(在动画中开始出现绿点之前)。
所以 JavaFX 16 复制了 Michelle 描述的问题,而 JavaFX 17 修复了由于 bug fix(正如 Jose 预测的那样)引起的问题。
因此,如果使用长 运行 gif,请确保您使用的是 JavaFX 17+。
测试代码(使用问题中的gif):
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class GifTest extends Application {
@Override
public void start(Stage stage) {
Scene scene = new Scene(
new StackPane(
new ImageView(
GifTest.class.getResource(
"game.gif"
).toExternalForm()
)
)
);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
如果您想更好地控制播放,或者如果您必须使用较早的 JavaFX 版本且 gif 播放有问题,您可以