我正在尝试创建一个连续的动画,最终目标将是一个弹跳球从屏幕的边缘反弹,但是,一步一步。
我从Oracle的示例代码开始,该代码具有移动40秒的圆圈动画。
public void start(Stage primaryStage)
{
Group root = new Group();
Scene scene = new Scene(root, 800, 600);
primaryStage.setScene(scene);
Group circles = new Group();
for (int i = 0; i < 1; i++)
{
MovingCircle circle = new MovingCircle(150, Color.web("white", 0.05));
circle.setStrokeType(StrokeType.OUTSIDE);
circle.setStroke(Color.web("black", 0.16));
circle.setStrokeWidth(4);
circles.getChildren().add(circle);
}
root.getChildren().add(circles);
Timeline timeline = new Timeline();
timeline.setCycleCount(Timeline.INDEFINITE);
for (Node circle: circles.getChildren())
{
if(circle instanceof MovingCircle)
{
MovingCircle c = (MovingCircle)circle;
timeline.getKeyFrames().addAll(
/* new KeyFrame(Duration.ZERO, // set start position at 0
new KeyValue(circle.translateXProperty(), random() * 800),
new KeyValue(circle.translateYProperty(), random() * 600)
),*/
new KeyFrame(new Duration(10), // set end position at 40s
c.getXMovement(), c.getYMovement())
);
c.updateCenter();
}
}
// play 40s of animation
timeline.play();
primaryStage.show();
}
我创建了一个新的MovingCircle,它扩展了Circle,以便稍后尝试添加其他东西。这两个新类方法完全返回从给定的默认代码中注释掉的内容。
我将周期改为无限期,以便它永远存在。虽然所有圆圈都在其原始起点和平移点之间反弹。我已经尝试更新其中心位置,希望下次反弹会将其移动到不同的位置,但是,这不起作用。
我对于接下来要尝试的更多工作方式感到十分茫然。