Objekte in richtiger Z-Reihenfolge zeichnen

Status
Nicht offen für weitere Antworten.

conan2

Aktives Mitglied
Ich probiere derzeit einen Katamari-Clone zu schreiben und habe gerade das Problem, dass ich alle Objekte im Vector<Drawable>, das alle zu zeichnenden Objekte enthält, in der richtigen Reihenfolge zeichnen muss, so wie es die getZ()-Methode von meinem Drawable vorsieht.
Dazu habe ich erstmal einen Hashtable mit den Z-Koordinaten als Key und den Indizes der Drawable-Objekte als Value befüllt. Danach habe ich ein Array mit den Z-Koordinaten erstellt und diese dann sortiert. Jetzt kann wenn ich das Array durchlaufe und die daraus resultierenden Z-Werte beim Vector als Key benutzen um die Indizes in der gewünschten Reihenfolge erhalten.
So weit, so gut, die Probleme treten erst dann auf wenn es mehrere Objekte mit den selben Z-Koordinaten im dem Hashtable gibt. Dann erhalte ich öfters dasselbe Objekt wenn ich dieselbe Z-Koordinate als Key benutze. Deswegen will ich versuchen das Key-Value-Paar aus dem Hashtable zu entfernen nachdem ich es ausgelesen habe. Das wollte ich mit der Hashtable.remove(key)-Methode machen, habe aber dann festgestellt, dass alle Paare mit dem angegebenen key entfernt werden. Gibt es also eine Methode, ein Paar zu entfernen, wenn man den Value desselben kennt? Denn Values können in meinem Hashtable keine doppelt vorkommen!
 
B

Beni

Gast
Ordne deinen Array doch direkt nach der Z-Koordinate:
Code:
Drawable[] array = vector.toArray( new Drawable[ vector.size() ]);

Arrays.sort( array, new ZComparator() );

... // zeichnen

Code:
public class ZComparator implements Comparator<Drawable>{
  public int compare( Drawable a, Drawable b ){
    int az = a.getZ();
    int bz = b.getZ();
    return az - bz; // kleine z sind weiter oben
  }
}

"Arrays" findest du im Package "java.util", und wie sort, bzw. der Comparator funktioniert, liest du am besten in der API nach.
 

conan2

Aktives Mitglied
Gah... Warum hab ich nur gewusst dass es sicher irgendeine einfache Lösung gibt? >.<
Liegt wahrscheinlich daran, dass ich noch nie einen Comparator verwendet hab...
Jedenfalls vielen herzlichen Danke für diese Lösung, ich war schon der Verzweiflung nahe^^
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Wie bekomme ich eine Transition für alle Objekte zum stoppen? Spiele- und Multimedia-Programmierung 1
Kim_Dotcom Objekte synchronisieren Variablen Spiele- und Multimedia-Programmierung 19
K Bewegte Objekte per Mausklick entfernen Spiele- und Multimedia-Programmierung 3
N Helden: Verschiedene Objekte oder konkrete Unterklassen Spiele- und Multimedia-Programmierung 1
gamebreiti Wie Objekte versenden und empfangen Spiele- und Multimedia-Programmierung 4
J Objekte übereinander lagern Spiele- und Multimedia-Programmierung 1
L JavaFX Objekte bewegen Spiele- und Multimedia-Programmierung 3
Q Mehr objekte darstellen als Pixel vorhanden Spiele- und Multimedia-Programmierung 6
lord239123 Minecraft Nur sichtbare Objekte rendern Spiele- und Multimedia-Programmierung 5
Z Objekte animieren mit Threads Spiele- und Multimedia-Programmierung 4
M Objekte verschwinden durch Explosion Spiele- und Multimedia-Programmierung 2
E [LWJGL] Karusell, mehrere Objekte drehen sich um einen Mittelpunkt Spiele- und Multimedia-Programmierung 31
A LWJGL 3D Objekte Kollision Spiele- und Multimedia-Programmierung 3
A JME3 will Blender/j3o Objekte nicht einladen Spiele- und Multimedia-Programmierung 3
B LWJGL/OpenGL rendert manche Objekte nicht Spiele- und Multimedia-Programmierung 6
T JOGL 2D Objekte drehen rotate Spiele- und Multimedia-Programmierung 4
D Objekte in weiter Entfernung flimmern / flackern Spiele- und Multimedia-Programmierung 2
G 3D-Objekte / Grafiken gesucht Spiele- und Multimedia-Programmierung 6
S Klickbare Objekte im Spiel Spiele- und Multimedia-Programmierung 8
T Java3D: Objekte platzieren und entfernen? Spiele- und Multimedia-Programmierung 7
W Rotation aller Objekte einer 3D-Szene Spiele- und Multimedia-Programmierung 8
L 3D Objekte in Java importieren Spiele- und Multimedia-Programmierung 2
M Java3D Picking - falsche Objekte werden gepickt Spiele- und Multimedia-Programmierung 3
P Erkennen auf welche Objekte gezeigt wird in JoGL Spiele- und Multimedia-Programmierung 6
T Selbst-handelnde Objekte im Client-Server Betrieb Spiele- und Multimedia-Programmierung 9
M Java3D Objekte entfernen und hinzufügen Spiele- und Multimedia-Programmierung 10
aze Java 3d Objekte überdecken 2d Komponenten Spiele- und Multimedia-Programmierung 7
aze Java 3D : 3D Objekte speichern und später wieder einlesen Spiele- und Multimedia-Programmierung 9
D Halbdurchsichtige Objekte Spiele- und Multimedia-Programmierung 17
F zu viele Objekte, Problem mit neuzeichnen. Spiele- und Multimedia-Programmierung 5
M Alle Objekte aus der SimpleUniverse entfernen Spiele- und Multimedia-Programmierung 2
A Mehrere geometrische Objekte in JPanel zeichnen Spiele- und Multimedia-Programmierung 4
B Position der ViewingPlatform und Visueller Objekte setzen Spiele- und Multimedia-Programmierung 3
B Isometrischer KartenEditor mit Animierten Objekte Spiele- und Multimedia-Programmierung 3
J 1x Punktlicht auf 5 Objekte benutzen Spiele- und Multimedia-Programmierung 17
F Maussteuerung-gezeichnete Objekte Spiele- und Multimedia-Programmierung 4
B Objekte zur Laufzeit verändern Spiele- und Multimedia-Programmierung 3
A durch Objekte hindurchzoomen Spiele- und Multimedia-Programmierung 2
S 3D Objekte ohne Java3D darstellen? Spiele- und Multimedia-Programmierung 10
J Zu viele Objekte - OutOfMemoryError Spiele- und Multimedia-Programmierung 3
L Objekte zentrieren Spiele- und Multimedia-Programmierung 2
G zur laufzeit objekte einfügen Spiele- und Multimedia-Programmierung 3
G 2D-Objekte werden nicht vollständig gezeichnet Spiele- und Multimedia-Programmierung 4
A Objekte nacheinander zeitgesteuert rotieren lassen Spiele- und Multimedia-Programmierung 4
H 3D Objekte ausfüllen Spiele- und Multimedia-Programmierung 3
T 3D-Objekte Laden Spiele- und Multimedia-Programmierung 3
D 2D Graphic Objekte in ein JPanel einfügen Spiele- und Multimedia-Programmierung 2
G Zugriff auf einzelne Objekte Spiele- und Multimedia-Programmierung 12
I Vier gewinnt programmieren, Klick-Reihenfolge Spiele- und Multimedia-Programmierung 2
S PaintComponent zeichnet in falscher reihenfolge Spiele- und Multimedia-Programmierung 8
U Umgekehrte Reihenfolge der Transformationen bei GLES1 und GLES2 Spiele- und Multimedia-Programmierung 2
h0b0 Reihenfolge von Matrixmultiplikationen Spiele- und Multimedia-Programmierung 10
H Reihenfolge von Transforamtionen Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen

Neue Themen


Oben