Rechteck Mit Hilfe Von Timeline, KeyFrames animieren

bluna

Mitglied
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

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 :oops:
 

Paddelpirat

Bekanntes Mitglied
Hi,

guck dir mal die Doku zu Timeline an. Das wird eigentlich dazu verwendet um Aktionen parallel durchzuführen. Daher kommen deine "unerwarteten" Bewegungen, denn du führst mehrere Aktionen gleichzeitig aus. Außerdem gibst du bei den KeyFrames die Dauer der Bewegung an und nicht den zeitlichen Startpunkt. Dies führt dazu, dass manche Bewegungen "richtig" und manche "falsch" aussehen, da sie sich überschneiden.

Für deinen Fall gibt es die PathTransition:

Java:
        Path path = new Path();
        path.getElements().add(new MoveTo(100, 100));
        path.getElements().add(new LineTo(200.0f, 100.0f));
        path.getElements().add(new MoveTo(200, 100));
        path.getElements().add(new LineTo(200.0f, 200.0f));
        path.getElements().add(new MoveTo(200, 200));
        path.getElements().add(new LineTo(100.0f, 200.0f));
        path.getElements().add(new MoveTo(100, 200));
        path.getElements().add(new LineTo(100.0f, 100.0f));
        path.getElements().add(new MoveTo(100, 100));
        
        
        PathTransition pathTransition = new PathTransition();
        pathTransition.setDuration(Duration.millis(8000));
        pathTransition.setPath(path);
        pathTransition.setNode(rect);
        pathTransition.setOrientation(PathTransition.OrientationType.ORTHOGONAL_TO_TANGENT);
        pathTransition.play();
 

bluna

Mitglied
hi, danke für die antwort.

ich habe bereits die offizielle oracle-doku gelesen.
Ich sehe zwar dass ich offentsichtlich irgend etwas nicht verstanden zu haben, aber ich habe nirgends davon gelesen, dass die Timeline generell nur für Paralele Animationen gedacht ist. Kannst du mir sagen, wo du das gelsen hast ?
 

Paddelpirat

Bekanntes Mitglied
Ich gebe zu so ganz explizit steht es da auch nicht. Ich habe mich bei meinem Test mal zwei KeyFrames beschränkt, wobei das eine eine horizontale und das andere eine vertikale Bewegung durchführen sollte.

Als Ergebnis erhielt ich eine schräge Bewegung, also hat die Timeline die einzelnen Schritte der beiden KeyFrames abwechselnd abgearbeitet. In der JavaFX-Doku steht dann noch dieser Satz:

Code:
Timeline processes individual KeyFrame at or after specified time interval elapsed, it does not guarantee the timing when KeyFrame is processed.

Heißt für mich, dass man das benutzen sollte, wenn man mehrere Aktionen durchführen möchte und die Reihenfolge in der dies stattfindet egal ist.

Außerdem hörte sich die PathTransition schon sehr nach dem an, was du machen wolltest. Wobei man auch mehrere PathTransitions definieren und sie dann mit einer SequentialTransition nacheinander ausführen könnte.

Timeline (JavaFX 2.2)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Kann ich ein Rechteck mittig im Fenster halten, egal wie ich die Bildschirmgröße verändere? AWT, Swing, JavaFX & SWT 3
berserkerdq2 Mein Rechteck hat 4 Seiten, ich soll je nach dem, welche Seite berührt wurde, etwas ausführen, wie prüfe ich das? AWT, Swing, JavaFX & SWT 12
B AWT Rechteck abnehmen lassen AWT, Swing, JavaFX & SWT 9
N Mit KeyListener ein rechteck zeichnen AWT, Swing, JavaFX & SWT 9
E Button verschwindet nachdem ein Rechteck gezeichnet wurde AWT, Swing, JavaFX & SWT 5
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
L Swing Ein Rechteck in ein Grid Zeichnen AWT, Swing, JavaFX & SWT 5
D Quadrat, Rechteck zeichnen AWT, Swing, JavaFX & SWT 3
F Java Swing Rechteck in JPanel zeichnen AWT, Swing, JavaFX & SWT 7
F 2D-Grafik Gestricheltes Rechteck AWT, Swing, JavaFX & SWT 1
Z Frame mit Rechteck! AWT, Swing, JavaFX & SWT 16
T Problem beim Zeichnen von Rechteck AWT, Swing, JavaFX & SWT 3
S Warum wird dieses Rechteck nicht korrekt gemalt? AWT, Swing, JavaFX & SWT 7
S "Quadrat oder Rechteck" - Check AWT, Swing, JavaFX & SWT 3
C Rechteck drehen AWT, Swing, JavaFX & SWT 1
D 2D-Grafik Rechteck befindet sich unter dem Rahmen des JFrame. AWT, Swing, JavaFX & SWT 1
M JavaFX Rechteck mit MausListener AWT, Swing, JavaFX & SWT 3
I Rechteck eines Graphics eines JPanels in einem anderen JPanel anzeigen AWT, Swing, JavaFX & SWT 7
T transparent geht nicht (btw: rechteck) AWT, Swing, JavaFX & SWT 13
J SWT Rechteck Füllfarbe wird bei Action falsch gefüll AWT, Swing, JavaFX & SWT 2
H Rechteck via Mouse bewegen AWT, Swing, JavaFX & SWT 2
A Rechteck zeichen AWT, Swing, JavaFX & SWT 4
C Auto fahren - Rechteck JFrame AWT, Swing, JavaFX & SWT 6
E Swing Rechteck und Kreise verschieben AWT, Swing, JavaFX & SWT 3
G Swing Rechteck uebermalen AWT, Swing, JavaFX & SWT 10
M Rechteck "umdrehen"/über die Kante drehen AWT, Swing, JavaFX & SWT 4
J 2D-Grafik Rechteck mit dickerem Rand zeichnen AWT, Swing, JavaFX & SWT 8
H Rechteck grafisch ausgeben (2D) AWT, Swing, JavaFX & SWT 3
G Rechteck mit Farbverlauf AWT, Swing, JavaFX & SWT 5
E Rechteck in JPanel Zeichnen AWT, Swing, JavaFX & SWT 6
G Rechteck zeichnen + "special features" :-) AWT, Swing, JavaFX & SWT 16
A Java Button mal nicht nur als rechteck AWT, Swing, JavaFX & SWT 16
B awt rechteck zeichnen AWT, Swing, JavaFX & SWT 3
R Rechteck drehen! AWT, Swing, JavaFX & SWT 4
K Problem mit JLabel, Rechteck, repaint() ;) AWT, Swing, JavaFX & SWT 2
J Auf Button - Druck soll Rechteck Farbe verändern AWT, Swing, JavaFX & SWT 8
M Rechteck zeichnen AWT, Swing, JavaFX & SWT 4
TheJavaKid Kreis, Rechteck, Linie. verschieben AWT, Swing, JavaFX & SWT 5
S Rechteck per Mouse aufziehen AWT, Swing, JavaFX & SWT 7
A Dreidimensionales Rechteck AWT, Swing, JavaFX & SWT 3
C Schräges Rechteck in Swing? AWT, Swing, JavaFX & SWT 7
G Rechteck normalisieren AWT, Swing, JavaFX & SWT 2
P Rechteck "verkehrt" herum zeichnen AWT, Swing, JavaFX & SWT 2
I Hilfe bei dem Erstellen einer SQL Abfrage aus gewählten JComboBoxen AWT, Swing, JavaFX & SWT 5
JavaBeginner22 Button Hilfe AWT, Swing, JavaFX & SWT 0
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
senol JOptionPane hilfe!!! :(((( AWT, Swing, JavaFX & SWT 32
donnico2 Objekte in der GUI ausgeben mit Hilfe einer DAO AWT, Swing, JavaFX & SWT 1
J Swing Hilfe bei Layout AWT, Swing, JavaFX & SWT 2
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
F BorderLayout Hilfe bei Anzeige AWT, Swing, JavaFX & SWT 2
J Hilfe beim tablevies AWT, Swing, JavaFX & SWT 2
T Swing Hilfe - Selbst Informatik Lehrer konnte mir nicht weiter Helfen AWT, Swing, JavaFX & SWT 2
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
A Swing TicTacToe-Bitte um Hilfe AWT, Swing, JavaFX & SWT 32
T Bitte um Hilfe AWT, Swing, JavaFX & SWT 2
T Hilfe bei Code AWT, Swing, JavaFX & SWT 2
S Hilfe bei Java Gui Anfänger AWT, Swing, JavaFX & SWT 5
J Warum geht das nicht? if-else usw..... compilieren geht nicht -- HILFE!!! AWT, Swing, JavaFX & SWT 10
M Problem mit Layoutmanagern... Hilfe wäre sehr nett. AWT, Swing, JavaFX & SWT 2
T Hilfe was mus ich tun um das fertige JfxFenster zu sehen AWT, Swing, JavaFX & SWT 2
R Hilfe beim ändern des Hintergrundes eines JFrames AWT, Swing, JavaFX & SWT 9
A hilfe für flowlayout AWT, Swing, JavaFX & SWT 6
N Swing Benötige Hilfe um ein Swing Canvas zu speichern AWT, Swing, JavaFX & SWT 4
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
C Gesucht: Hilfe beim programmieren. AWT, Swing, JavaFX & SWT 1
V Swing Brauche Hilfe mit Label AWT, Swing, JavaFX & SWT 3
C Hilfe beim programmieren mit studiumgebundenes Projekt AWT, Swing, JavaFX & SWT 1
T Swing JTable Zeile mit ausgelesenen Werten mit Hilfe von einem Button hinzufügen AWT, Swing, JavaFX & SWT 1
A JavaFX Hilfe beim Design eines Quiz AWT, Swing, JavaFX & SWT 2
H Swing Hilfe bei GUI AWT, Swing, JavaFX & SWT 4
T HILFE wie lösche ich gezeichnetes per tastendruck AWT, Swing, JavaFX & SWT 1
R Swing JOptionPane Fehlermeldung- bitte um Hilfe! AWT, Swing, JavaFX & SWT 4
Tausendsassa ImageIcon?! Hilfe! AWT, Swing, JavaFX & SWT 10
C Hilfe bei JSpinner und JList AWT, Swing, JavaFX & SWT 1
J GridBagLayout mit Hilfe einer For-Schleife befüllen AWT, Swing, JavaFX & SWT 1
M Hilfe bei Performanceverbesserung AWT, Swing, JavaFX & SWT 34
B Hilfe welches Layout brauch ich AWT, Swing, JavaFX & SWT 4
M SwingWorker Hilfe! AWT, Swing, JavaFX & SWT 10
K Swing Brauche Hilfe AWT, Swing, JavaFX & SWT 6
O AWT Performance und Bug behebung[brauche Hilfe] AWT, Swing, JavaFX & SWT 2
K Swing Konsolen Programm in GUI - Suche Hilfe bei Konsolenausgabe AWT, Swing, JavaFX & SWT 2
K Viele Textfield mit Hilfe eines MousListener leeren - möglich? AWT, Swing, JavaFX & SWT 8
I ausgewählte Zeile mit Hilfe der Tastatur löschen! AWT, Swing, JavaFX & SWT 3
Kenan89 Java FX GUI Hilfe für erste Java FX App AWT, Swing, JavaFX & SWT 8
J LayoutManager Hilfe bei Wahl des Layouts AWT, Swing, JavaFX & SWT 9
F Hilfe beim ausschalten von Robot AWT, Swing, JavaFX & SWT 7
N Hilfe bei Memory-Spiel AWT, Swing, JavaFX & SWT 18
L Swing Hilfe bei JTabelModel gesucht AWT, Swing, JavaFX & SWT 4
B Hilfe zu JTable und JTabbedPane AWT, Swing, JavaFX & SWT 18
K Hilfe bei Labels AWT, Swing, JavaFX & SWT 3
S Hilfe beim Lernprozess von java3d AWT, Swing, JavaFX & SWT 20
T JLayeredPanel - Hilfe AWT, Swing, JavaFX & SWT 7
C Swing Hilfe bei umsetzung eines Stundenplans. AWT, Swing, JavaFX & SWT 7
K Swing Hilfe beim JTree! AWT, Swing, JavaFX & SWT 3
N Hilfe bei Panels! AWT, Swing, JavaFX & SWT 11
F Swing Syntaxhighlighting Hilfe AWT, Swing, JavaFX & SWT 5
Jats Bitte um Hilfe bei JComboBox mit Array AWT, Swing, JavaFX & SWT 6
Jats Hilfe bei FocusListener für Taschenrechner AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben