# [Swing] Isometrie



## ice-breaker (5. Jun 2007)

hi,
ich wollte eine kleine isometrische Map zeichnen die aus vielen kleinen tiles besteht.
Nun ist aber das Problem, dass sich die transparenten ecken der tiles (da isometrie) überschneiden, wenn ich nun einen listener auf eine solche grafik setze um zu wissen wenn jemand dadrauf klicked, was passiert wenn ich in besagtem bereich klicke?
Denn das sind ja 2 sich überlappende Grafiken, wenn beide einen Listener haben welcher wird aktiviert?


----------



## Wildcard (5. Jun 2007)

Nimm ein Shape. Im Event kannst du dann shape.contains(pt) abfragen.


----------



## ice-breaker (6. Jun 2007)

Gleich vorneweg GUI-Programmierung ist nicht mein métier ich mache lieber server-anwendungen^^
Shape ist ja ein Interface welche implementierende Klasse müsste ich denn da wählen? Denn beim drüberstöbern bin ich auf keine gestoßen die passen könnte.
Und meine Tiles (Sprites) sind ja Grafiken, d.h. ich müsste ja ein Bild in ein Shape umwandeln, neija, ob das so einfach geht?
Also generell Grafiken übereinander legen geht nicht oder?
Weil ich kenne das so aus Flash das bei z.B. einem hoover dann bei einer Überlappung von 2 Grafiken, das jenige den Fokus hat, welches "darüber" gezeichnet wurde

Edit: wenn ich direkt die Zeichenmethoden aufrufe, und auf die GUI zeichne, kann ich ja auch keine MouseOver- und MouseClicked-Listener mehr verwenden, dann müsste ich ja selbst jeden Mouse-Move abfangen  :shock: 
gibt es nicht irgendwo gutes material zu java und isometrie? Das was ich so gefunden habe ist net so doll, ich will Flash zurück ^^


----------



## Wildcard (6. Jun 2007)

Also ganz ehrlich, da es bei Tiles schnell recht viele werden, da solltest du aufgrund des Overheads keine Componentes verwenden sondern tatsächlich selbst Zeichnen.
Zu deiner Shape Frage: Nimm zum Beispiel ein Polygon.
Die Grafik selbst muss natürlich nicht Shape implementieren, schleif einfach ein Polygon mit das die Größe der Grafik repräsentiert und die Geometrie erledigt.



> Das was ich so gefunden habe ist net so doll, ich will Flash zurück ^^


Wenn du von der Flash Welt kommt, nimm Java FX Script.


----------



## ice-breaker (6. Jun 2007)

Wildcard hat gesagt.:
			
		

> > Das was ich so gefunden habe ist net so doll, ich will Flash zurück ^^
> 
> 
> Wenn du von der Flash Welt kommt, nimm Java FX Script.



danke werde ich mir mal ansehen.

nur den Sinn des Shapes verstehe ich nicht ganz^^
also ich habe jetzt schon raus gefunden, dass ich einfach die Grafiken wegen ihrer Transparenz in ein Panel zeichnen kann (habe Spielbrett von JPanel abgeleitet).
Nun muss ich aber für bestimmte Felder die Möglichkeit zum klicken oder einen mouse-over haben, da dachte ich eben daran an bestimmte Felder ne component zu legen^^
Andererseits würde es auch die Möglichkeit geben, mit MouseInfo die Position auszulesen und die Koordinaten umzurechnen auf welchem Tile sie liegen um damit einerseits einen Hand-Cursor zu nutzen und bei einem Klick rauzufinden auf welchem Tile der Klick erfolgte und entsprechend Aktionen auszuführen.
Allerdings alles ohne shape, das war in der Idee noch net drinne, und ob das mit den Mouse-Positionen so genial ist?
nen Component wäre da wahrscheinlich doch besser.


----------



## Wildcard (6. Jun 2007)

Es hängt von der Anzahl der Elemente ab.
Bei vielen Components hast du einen deutlichen Overhead, hier würde es ein einfacher MouseListener auf dem Hauptpanel auch tun.
In diesem Listener bestimmst du dann welches Element angeklickt wurde.


----------

