# TiledMap "langsam" verschieben



## Xym13 (4. Okt 2012)

Hallo zusammen,

ich würde gerne wissen, ob es möglich ist den Ausschnitt einer TiledMap langsamer zuverschieben.

Im Moment wird diese so gezeichnet:

```
map.render(0, 0, Main.dx, Main.dy, 400, 300);
```
dx, und dy sind die Variablen, um wieviel die Karte verschoben wird. Also wenn man z.B. "w" drückt wird dy um 1 verringert.
Der Spieler wird dabei genau in die Mitte der Karte gezeichnet.

Wenn ich die jetzt aber verschieben, passiert das halt sehr unschön. Kann man den Vorgang des Verschiebens langsamer darstellen?


----------



## Firephoenix (4. Okt 2012)

ist das Awt, Slick2d, ...?
Wie sind allgemein deine Bildraten, wie oft wird neu gezeichnet?

Ein paar mehr Infos wären gut,
nur an dem Aufruf sieht man nicht wirklich viel und Ruckeln selbst kann ziemlich viele Ursachen haben.

Gruß


----------



## Bile Demon (4. Okt 2012)

Ich denke, er fragt sich, ob man den Bildausschnitt auch langsamer als 1 Pixel pro Frame bewegen kann, weil Bildschirminhalte ja immer in ganzen Pixelzahlen gezeichnet werden.

Ja.

Du könntest dir eine x und y double-Variable anlegen, diese z.B. um 0.2 pro Frame in die entsprechende Richtung anpassen und dann zum Zeichnen nach int casten.


----------



## Xym13 (4. Okt 2012)

Also,

ich nutze Slick AE. FramRate liegt bei ca. 60 Frames.

Das Problem ist, dass die Methode render nur Integers erlaubt. Die Verschiebung wird über die 3. und 4. Variable gesteuert.

Wenn Main.dx = 1 ist, dann wird die Map um 16 Pixel verschoben, da die Kachelgröße bei der Map 16x16 groß ist. Daher sind Dezimalzahlen keine Lösung...


----------



## Firephoenix (4. Okt 2012)

Also verschiebst du Kachelweise, hast du nicht die Möglichkeit pixelweise zu verschieben?
So das dx=1 -> 1 Pixel unterschied?

Gruß


----------



## Xym13 (4. Okt 2012)

Ich weiß halt nicht genau, wie ich es Pixelweise verschieben kann, daher frage ich hier auch nach..


----------



## BRoll (4. Okt 2012)

Na du hast dass doch programmiert?

Wenn du es mit Tileweise hinbekommst, dann schaffst dass ja auch Pixelweise.
Du musst eben einfach wie gesagt aus den int  für die Verschiebung floats machen.
Dann bei der Stelle eben wo du die einzelnen Tiles (Bilder) zeichnest, 
den float zurückcasten. Eben (int)verschiebung. 

Im Prinzip ist es ja dasselbe, es wird immer pixelweise gezeichnet,
bloß kann man die Verschiebung entsprechend berechnen.
Und wenn du sie tileweise berechnest ist sie eben  =  Verschiebung in Tiles * Tilegröße in Pixel
Jetzt rate mal wie man dann Pixelweise berechnet 


Aber so wie sich das anhört gibt es deine render Methode 
schon vorgegeben, oder jemand anderes hat sie gemacht?
Such doch einfach bei der map und änder die Methode entsprechend ab. 


Sonst wüsstest du ja wie du sie ändern kannst, wenn du
sie ja schon erstellt hättest.


----------



## Marco13 (4. Okt 2012)

Was habt ihr alle mit floats? ???:L Solange man nicht mehr code hat, und nicht mal weiß, was die gepostete Methode macht, kann man lange rumraten...


----------



## Firephoenix (4. Okt 2012)

Marco13 hat gesagt.:


> Was habt ihr alle mit floats? ???:L Solange man nicht mehr code hat, und nicht mal weiß, was die gepostete Methode macht, kann man lange rumraten...



Ich kenne mich mit Slick AE speziell nicht aus, aber das "normale" Slick kann auf alle Fälle mit float-genauigkeit rendern (intern dann wohl doch nicht so genau wie ich letztens erfahren durfte ).
Auf alle Fälle sollte es mit Slick möglich sein Verschiebungen Pixelweise zu realisieren anstatt in 16er Schritten, die map die er verwendet scheint auch keine Implementierung aus Slick zu sein sondern ein Eigenbau (was nicht unbedingt schlechter sein muss).

Gruß


----------

