【问题标题】:How to dynamically play JavaFX animations如何动态播放 JavaFX 动画
【发布时间】:2016-10-25 02:46:23
【问题描述】:

我有一个 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() 方法时,没有任何反应。

【问题讨论】:

  • 获取 Timeline 对象并再次运行timeline.play() - 这样做能解决问题吗?
  • 是的。有用!!!哇,我完全错过了一些东西,因为我以前尝试过,但我可能有一些错误。现在我再次尝试了它。谢谢。
  • 我用实际代码 sn-p 等发布了一个完整的答案。如果我有帮助,如果你能接受我的回答,我会很高兴

标签: java animation javafx


【解决方案1】:

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

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

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

然后当你想重用动画时调用timeline.play()

祝你好运!

【讨论】:

    猜你喜欢
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    • 2019-09-05
    相关资源
    最近更新 更多