如何动态播放JavaFX动画

时间:2016-10-25 02:46:23

标签: java animation javafx

我有一个Java应用程序,当我单击一个按钮时,ImageView会在屏幕上移动一定量。我怎样才能使每次单击按钮时都运行动画?我知道如何制作一个单击按钮并让它运行一个功能。我只是不知道如何正确使用动画来动态运行新的动画。

public Timeline moveAnimation(double x, double y) {
    // horizontal movement
    KeyValue kv = new KeyValue(turtle.xProperty(), x);
    KeyFrame kf = new KeyFrame(Duration.millis(500), kv);
    timeline.getKeyFrames().add(kf);

    // vertical movement
    KeyValue kv2 = new KeyValue(turtle.yProperty(), y);
    KeyFrame kf2 = new KeyFrame(Duration.millis(500), kv2);
    timeline.getKeyFrames().add(kf2);

    return timeline;
}

public void move(double x, double y) {
    moveAnimation(x, y).play();
}

上述方法将播放一次。当我尝试使用新值再次运行move()方法时,没有任何反应。

1 个答案:

答案 0 :(得分:1)

Timeline包含所有动画"步骤" (又名:KeyFrame)。

move方法中,您应该使用Timeline方法返回的值分配moveAnimation类型的变量,如下所示:

public void move(double x, double y) {
     Timeline timeline = moveAnimation(x, y).play();
     //use timeline wherever...
}

然后在想要重复使用动画时调用timeline.play()

祝你好运!