JavaFX Timeline Bewegungen am ImageView nachvollziehen

hk

Bekanntes Mitglied
Ich möchte Schrittbewegungen von zwei Schuhen (ImageView) so animieren das sie einen Schritt nach den anderen setzen. Ich habe mir dafür die Timeline Funktionen ausgesucht. Dabei habe ich ein Probleme:
Da Timeline nicht die Positionen der ImageViews verändert, mache ich dies am Ende der Timeline mit .setOnFinished und einen EventHändler. Dabei sieht es so aus, als ob die Bewegung der Timeline kürzer ist als die danach gesetzte Position (es erfolgt eine ruckartige Bewegung) .

Wie kann ich das vermeiden?

Der Code:
Java:
  /**************************************************
   * Eine Schrittfolge links, rechts, links animieren
   */
  public void walkOn() {
    makeOneStep(app.schuhOL, 0, -10, 500, 0);      //linker Schritt
    makeOneStep(app.schuhOR, 0, -20, 1000, 500);   //rechter Schritt
    makeOneStep(app.schuhOL, 0, -20, 1000, 1000);  //linker Schritt
  } //end walkOn *****************************************************

  /**************************
   * Eine Schritt durchführen
   *
   * @param imgV
   * @param x
   * @param y
   * @param dur : Durchlaufzeit
   * @param del : Wartezeit bis Start
   */
  private void makeOneStep(ImageView imgV, double x, double y, int dur,
          int del) {
    KeyValue kvX = new KeyValue(imgV.translateXProperty(), x);
    KeyValue kvY = new KeyValue(imgV.translateYProperty(), y);
    KeyFrame kf = new KeyFrame(Duration.millis(dur), kvX, kvY);
    Timeline tl = new Timeline(kf);
    tl.setCycleCount(1);
    tl.setAutoReverse(false); 
    tl.setDelay(Duration.millis(del));
    tl.setOnFinished(new EventHandler<ActionEvent>() {
      @Override
      public void handle(ActionEvent t) {
        imgV.setX(imgV.getX() + x);       //Bewegung im ImageView nachvollziehen
        imgV.setY(imgV.getY() + y);
      }
    });
    tl.playFromStart();
  } //end makeOneStep *************************************************
 

Zurück
Oben