Animation 使用javafx的抛物线跳跃动画

Animation 使用javafx的抛物线跳跃动画,animation,javafx,javafx-2,javafx-8,Animation,Javafx,Javafx 2,Javafx 8,我正在使用JavaFX制作一个简单的侧滚平板射击游戏。我想要一个非常简单的抛物线跳跃动画的角色。当前,角色扩展了StackPane,并生活在场景中。我被告知使用Interpolator.SPLINE进行跳跃动画,但它似乎不起作用。 目前,我有: public void Jump(){ TranslateTransition translation = new TranslateTransition(Duration.millis(1), this); translation.in

我正在使用JavaFX制作一个简单的侧滚平板射击游戏。我想要一个非常简单的抛物线跳跃动画的角色。当前,角色扩展了StackPane,并生活在场景中。我被告知使用Interpolator.SPLINE进行跳跃动画,但它似乎不起作用。 目前,我有:

public void Jump(){
    TranslateTransition translation = new TranslateTransition(Duration.millis(1), this);
    translation.interpolatorProperty().set(Interpolator.SPLINE(.1, .1, .7, .7));
    translation.play();
}
但它似乎一点也不动。但是,我的其他动画命令(向左移动和向右移动)使用的是简单的平移变换。跳转函数有什么问题

您有两个问题:

  • 您的转换不会移动任何东西,您需要使用插值器设置移动的位置,例如
    translation.setByY(-50)
  • 持续时间。毫秒(1)
    是1毫秒,你看不到任何东西移动得这么快。试试500
此外,如果你想跳,你还需要提供回程动作。最简单的方法是通过以下方式恢复当前转换:

translation.setAutoReverse(true);
translation.setCycleCount(2);
例如:

TranslateTransition translation = new TranslateTransition(Duration.millis(500), this);
translation.interpolatorProperty().set(Interpolator.SPLINE(.1, .1, .7, .7));
translation.setByY(-50);
translation.setAutoReverse(true);
translation.setCycleCount(2);
translation.play();