Nabend...
Es geht um JavaFx 2.x
Ich möchte gerne ein Rechteck mit Hilfe von einer Timeline und KeyFrames animieren.
Die Animation soll so verlaufen, dass das Rechteck sich sich im Rechteck bewegt.
Von der Startposition (z.b. x=100, y=100) 100pixel nach rechts, dann 100 nach unten, dann 100 nach links und dann 100 nach oben.
Nach vielen verschiedenen Ansätzen habe ich es leider nicht geschafft das Rechteck so zu bewegen - Nach der 2. Richtungsänderung verhält es sich für mich "komisch" - weil ich das Timline/Keyframe/Interpolator - wohl noch nicht durchschaut habe.
Mein aktuelle Lösungsansatz
Wer erklärt mir warum es nicht funktioniert / Postet die Lösung
Es geht um JavaFx 2.x
Ich möchte gerne ein Rechteck mit Hilfe von einer Timeline und KeyFrames animieren.
Die Animation soll so verlaufen, dass das Rechteck sich sich im Rechteck bewegt.
Von der Startposition (z.b. x=100, y=100) 100pixel nach rechts, dann 100 nach unten, dann 100 nach links und dann 100 nach oben.
Nach vielen verschiedenen Ansätzen habe ich es leider nicht geschafft das Rechteck so zu bewegen - Nach der 2. Richtungsänderung verhält es sich für mich "komisch" - weil ich das Timline/Keyframe/Interpolator - wohl noch nicht durchschaut habe.
Mein aktuelle Lösungsansatz
Java:
import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.util.Duration;
public class MovingRectangle extends Application {
@Override
public void start(Stage stage) throws Exception {
Group group = new Group();
Scene scene = new Scene(group);
stage.setWidth(500);
stage.setHeight(500);
Rectangle rect = new Rectangle(100, 100, 200, 200);
rect.fillProperty().set(Color.GREEN);
group.getChildren().add(rect);
stage.setScene(scene);
stage.show();
KeyValue x1 = new KeyValue(rect.xProperty(), rect.xProperty().doubleValue());
KeyValue y1 = new KeyValue(rect.yProperty(), rect.yProperty().doubleValue());
KeyValue x2 = new KeyValue(rect.xProperty(), rect.xProperty().doubleValue()+50);
KeyValue y2 = new KeyValue(rect.yProperty(), rect.yProperty().doubleValue());
KeyValue x3 = new KeyValue(rect.xProperty(), rect.xProperty().doubleValue());
KeyValue y3 = new KeyValue(rect.yProperty(), rect.yProperty().doubleValue()+50);
KeyValue x4 = new KeyValue(rect.xProperty(), rect.xProperty().doubleValue()-50);
KeyValue y4 = new KeyValue(rect.yProperty(), rect.yProperty().doubleValue());
KeyValue x5 = new KeyValue(rect.xProperty(), rect.xProperty().doubleValue());
KeyValue y5 = new KeyValue(rect.yProperty(), rect.yProperty().doubleValue()-50);
KeyFrame kf1 = new KeyFrame(Duration.seconds(0), x1, y1);
KeyFrame kf2 = new KeyFrame(Duration.seconds(2), x2, y2);
KeyFrame kf3 = new KeyFrame(Duration.seconds(4), x3, y3);
KeyFrame kf4 = new KeyFrame(Duration.seconds(6), x4, y4);
KeyFrame kf5 = new KeyFrame(Duration.seconds(8), x5, y5);
Timeline timeline = new Timeline();
timeline.getKeyFrames().addAll(kf1, kf2, kf3, kf4, kf5);
timeline.play();
}
/**
* @param args
*/
public static void main(String[] args) {
Application.launch(null);
}
}
Wer erklärt mir warum es nicht funktioniert / Postet die Lösung