Ich habe ein Problem beim Scrollen einer Tile-Map und könnte ein paar Denkanstöße gebrauchen....
Momentan habe ich ein sehr rudimentäres Programm, bei dem ich über eine Tile-Map scrolle. Mehr als anzeigen wird nicht gemacht. Es wird nichts hinzugefügt, keine Kollisione berücksicht, etc.. Trotzdem ruckelt das Teil. Was mir aufgefallen ist: Ich bewege die Tiles in Abhängigkeit von der Zeit, die der letzte Durchlauf der GameLoop benötigt und dort sind durchaus größere Schwankungen drin:
Beispiel (Zeitermitllung mit System.nano())
15519011
15624612
15661488
15868497
13840027 <---
17437971 <---
17158046
14283100
15872688
15580752
Aber solche Schwankungen sollten durch die Berechnung der Bewegung in Abhängigkeit vom Schleifendurchlauf ja kompensiert werden. Die Tiles werden über ein Rectangle2D.Double positioniert, daran sollte es auch nicht liegen.
Ich habe auch schon auf actives Rendern und Vollbild umgestellt, in der Hoffnung, daß das ein Ergebnis zeigt, aber das hat leider auch nichts gebracht.
Größere Codemengen will ich hier erst mal nicht reinpacken. Ich skizziere mal kurz den Programm-Aufbau
- Die Grafiken der Tiles werden vorab in eine Verwalter-Klasse geladen und numeriert.
- Die Tiles selber werden in einem Vector gespeichert und enthalten als Referenz auf die Grafikdatei die Nummer aus der Verwalterklasse
- beim Zeichnen wird geprüft, ob die Position des Tiles sich mit der virtuellen Bildschirmposition überdeckt. Wenn ja, wird es gezeichnet, dazu wird das Image aus der Verwalter-Klasse genommen.
- zur Simulation der Bewegung werden nicht die Tiles bewegt, sondern das Rechteck (Double), das die virtuelle Bildschirmposition repräsentiert.
Wäre schön, wenn jemand eine Idee hat.
Momentan habe ich ein sehr rudimentäres Programm, bei dem ich über eine Tile-Map scrolle. Mehr als anzeigen wird nicht gemacht. Es wird nichts hinzugefügt, keine Kollisione berücksicht, etc.. Trotzdem ruckelt das Teil. Was mir aufgefallen ist: Ich bewege die Tiles in Abhängigkeit von der Zeit, die der letzte Durchlauf der GameLoop benötigt und dort sind durchaus größere Schwankungen drin:
Beispiel (Zeitermitllung mit System.nano())
15519011
15624612
15661488
15868497
13840027 <---
17437971 <---
17158046
14283100
15872688
15580752
Aber solche Schwankungen sollten durch die Berechnung der Bewegung in Abhängigkeit vom Schleifendurchlauf ja kompensiert werden. Die Tiles werden über ein Rectangle2D.Double positioniert, daran sollte es auch nicht liegen.
Ich habe auch schon auf actives Rendern und Vollbild umgestellt, in der Hoffnung, daß das ein Ergebnis zeigt, aber das hat leider auch nichts gebracht.
Größere Codemengen will ich hier erst mal nicht reinpacken. Ich skizziere mal kurz den Programm-Aufbau
- Die Grafiken der Tiles werden vorab in eine Verwalter-Klasse geladen und numeriert.
- Die Tiles selber werden in einem Vector gespeichert und enthalten als Referenz auf die Grafikdatei die Nummer aus der Verwalterklasse
- beim Zeichnen wird geprüft, ob die Position des Tiles sich mit der virtuellen Bildschirmposition überdeckt. Wenn ja, wird es gezeichnet, dazu wird das Image aus der Verwalter-Klasse genommen.
- zur Simulation der Bewegung werden nicht die Tiles bewegt, sondern das Rechteck (Double), das die virtuelle Bildschirmposition repräsentiert.
Wäre schön, wenn jemand eine Idee hat.