Wie kann ich in Java und Processing verhindern, dass meine Animation "stockt", also hinterher hängt?

...komplette Frage anzeigen

4 Antworten

Im Prinzip kannst du nur versuchen die Rechnungen zu optimieren, also unnötige Rechnungen vermeiden.

Du kannst noch versuchen jeden Planeten in einem eigenen Thread zu berechnen und dann mittels Callback bzw Observer Pattern die neuen Koordinaten an den Zeichenthread zu übergeben.

Mit einem einfachen Befehl ist die Sache nicht getan, zumal wir auch deinen Code nicht kennen. 

- Du wirst an einer anderen Stelle ein Problem haben, behandelst du jeden Planeten als Thread? Ich nehme mal an. Nachdem die wohl 'endlos' Kreisen, hast du hier wohl auch eine Endlos-Schleife, korrekt? Und das Pro Thread. - Führst du Berechnungen innerhalb der Endlosschleife durch?

Führst du die Berechnung der Koordinaten Beispielweise der Schleife durch, wird vor jedem neuen Punkt die Koordinate neu berechnet. Demnach solltest du die Koordinaten vorher berechnen lassen, und wärend der Schleife nur noch abfragen. z.B. in einem Set Speichern und per Iteration die nächste Koordinate abfragen.

Solltest du das bereits gemacht haben, kannst du mal testen in jedem Thread eine kurze pause von wenigen Millisekunden (10-20) einzubauen. z.B. Thread.sleep(20). 

Wie PeterKremsner schon erwähnt hat, geht das über das weglassen von unnötigen Rechnungen oder eben Multithreading. Andere Wege wären eine bessere Hardware und eine andere Sprache (C++ ist in den meisten Fällen schneller) bzw. Grafikanbindung (kenne mich nicht in Java aus, und weiß nicht, ob du dir da noch ne extra Bibliothek für nimmst)

Die Frage ist da aber, ob du dort wirklich etwas ändern möchtest. Fest steht jedoch, dass es keine Funktion wie MakeJavaRunUltraSmooth() gibt, mit sich das einfach machen ließe.

Was möchtest Du wissen?