gpt4 book ai didi

java - 为什么我的程序不等待线程中的动画?

转载 作者:行者123 更新时间:2023-12-02 05:13:18 24 4
gpt4 key购买 nike

我希望我的程序在 PathTransition 完成后执行某些操作。因此,我创建了一个线程来运行动画,并使用 join() 方法让程序等待该线程。下面是我的试用代码

public class JavaFXApplication6 extends Application {
@Override
public void start(Stage primaryStage) {
ImageView iv = new ImageView(new Image("File:1.JPG"));
iv.setFitHeight(80);
iv.setFitWidth(50);
PathTransition pt = new PathTransition();
pt.setNode(iv);
pt.setCycleCount(1);
pt.setDuration(Duration.seconds(2));
pt.setPath(new Path(new MoveTo(0, 0), new LineTo(200, 200)));
AnchorPane root = new AnchorPane();
root.getChildren().add(iv);
Scene scene = new Scene(root, 300, 250);
primaryStage.setScene(scene);
primaryStage.show();
Thread t = new Thread (){
public void run(){
pt.play();
}
};
t.start();
try {
t.join();
}catch(InterruptedException w){}
System.out.println("I should be printed after the animation!");
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}

但是,在动画结束之前字符串就被打印出来了。为什么会发生这种情况?难道 join() 之后的任何事情都不会等待该线程死亡吗?
如果线程无法实现此目的,我可以使用什么技巧让程序等待动画,不使用 .setOnFinished()

最佳答案

根据https://docs.oracle.com/javafx/2/api/javafx/animation/Animation.html#play() :Animation#play() (PathTransition 继承它)是一个异步调用,这意味着它可能会在一个新线程上进行,而不是链接到您启动的线程,该线程在之后立即结束那个电话。

关于java - 为什么我的程序不等待线程中的动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27179376/

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