JavaFX Timeline Animation soll X- und Y-Position während Animation ändern

fhs14647

Mitglied
Ich habe leider noch ein Problem. Ich möchte dass bei folgender Animation sich der X-Wert (Startwert x) bzw. der Y-Wert (Startwert y) während der Animation laufend ändert.
Bei meiner Animation ändert sich nur beim Aufruf die Position, dann nicht mehr..

Vielen Dank vorab
Java:
public class TimeLines extends Application {

    private Rectangle rectBasicTimeline;
    private Timeline timeline;
   
    @Override
    public void start(Stage primaryStage) {
        Button btn = new Button();
        btn.setText("Do Animation");
        int x = new Random().nextInt(500);
        int y = new Random().nextInt(400);
        rectBasicTimeline = new Rectangle(x, y, 100, 50);
        rectBasicTimeline.setFill(Color.RED);

        btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
               
                final Timeline timeline = new Timeline();
                timeline.setCycleCount(Timeline.INDEFINITE);
                timeline.setAutoReverse(true);
                final KeyValue kx = new KeyValue(rectBasicTimeline.xProperty(), x + 200);
                final KeyValue ky = new KeyValue(rectBasicTimeline.yProperty(), y + 200);
                final KeyValue kScale = new KeyValue(rectBasicTimeline.scaleXProperty(), 2);
                final KeyValue kFade = new KeyValue(rectBasicTimeline.opacityProperty(), 0);
                final KeyFrame kf = new KeyFrame(Duration.millis(3000), kx, ky, kScale, kFade);
                timeline.getKeyFrames().add(kf);
                timeline.play();
          }
        });

        AnchorPane root = new AnchorPane();
        root.getChildren().addAll(btn, rectBasicTimeline);
        Scene scene = new Scene(root, 800, 600);
        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

}
 
Ich glaube, das kann man nur lösen, indem man die laufende Animation unterbricht, die Werte anpasst und wieder startet. Während der Laufzeit wüsste ich nicht, dass es geht. Wozu aber willst du den Startpunkt verändern? Ist nicht der Endpunkt sinnvoller?
 

Zurück
Oben