LibGDX: Wie können gekachelte Kartenkacheln klickbar gemacht werden?

8

Wie kann ich Klick-Listener für die Kacheln aus der gekachelten Karte hinzufügen, so dass, wenn Sie eine Kachel mit der Maus auswählen, diese hervorgehoben wird?

    
Andrew 06.06.2014, 11:02
quelle

1 Antwort

16

Das wird nicht direkt von libGDX unterstützt, da der TiledMap-Code nur zum Rendern dient.

Sie könnten jedoch problemlos eine Stage erstellen, die als eine Art Overlay-Eingabe-Ebene für Ihre TiledMap fungiert. Erstelle einfach ein Actor für jede Kachel, die dieselbe Größe wie die Position dieser Kachel hat. Dann können Sie EventListener s zu diesen Akteuren hinzufügen, um Dinge wie Klicks auf diese Akteure erkennen zu können.

Diese Akteure sollten einen Hinweis auf ihren "Ursprung" behalten, nämlich TiledMapTileLayer.Cell . So können Sie jederzeit vom Aktor zur Zelle zurückkehren, wenn Sie diese Ereignisse verarbeiten.

Im Folgenden wird gezeigt, wie Sie es tun könnten:

Dieser Akteur ist dafür verantwortlich, die Ereignisse abzufangen und die Informationen über die Kachel zu behalten, auf der er basiert:

%Vor%

Dieser kleine Zuhörer kann an einen dieser Schauspieler angehängt werden und macht jede Art von Logik:

%Vor%

Die folgende Klasse erstellt die Akteure aus einer gegebenen Karte und verbindet sie mit den Zuhörern:

%Vor%

Jetzt wird die TiledMapStage alle Arbeit für dich erledigen. Alles, was Sie tun müssen, ist folgendes:

%Vor%

Und in render (...) müssen Sie stage.act() aufrufen. Denken Sie daran, dieselbe Viewport für die Bühne zu verwenden, die Sie zum Rendern der TiledMap verwenden. Andernfalls werden die Eingabe und die gerenderte Karte nicht ausgerichtet.

    
noone 06.06.2014, 11:22
quelle

Tags und Links