Ich habe über die Funktion von scene2d der libgdx gelesen, einschließlich der UI-Elemente, aber das kann ich nicht Bring sie zur Arbeit. Sie alle scheinen ein Skin-Objekt zu verwenden, wie erstelle ich eines?
Ich habe das nette Tutorial durchgelesen, das ein einfaches Libgdx-Spiel erstellt, das Regentropfen in einem Eimer sammelt und ich habe eine einfache Brettspiel-App erstellt, indem ich Bilder mit einem Texturatlas geladen habe. Wie auch immer, scene2d klingt nach einer besseren Möglichkeit, um die beweglichen Teile in einer Brettspiel-App zu steuern, ebenso wie irgendwelche Knöpfe und Menüs.
Um eine Skin zu laden, können Sie mit den Beispiel-Skin-Dateien beginnen, die im libgdx-Testprojekt verwendet werden.
Es gibt ein bisschen mehr Details in diese Frage , und ich fand, dass ich die Dateien in ein Unterverzeichnis von verschieben musste Assets, um einen Fehler in der HTML-Version zu vermeiden. (Wenn ich Dateien im Ordner Assets belasse, sehe ich eine Fehlermeldung wie "GwtApplication: exception: Fehler beim Lesen der Datei data / uiskin.json.")
Ich habe ein vollständiges Beispiel gepostet, das eine einzelne Schaltfläche anzeigt, und der interessante Code ist alles in der Spielklasse . Das Beispiel ist so einfach, dass Sie nur zwei Elementvariablen benötigen, um die Szene und die Schaltfläche zu speichern.
%Vor%Um die Skin zu erstellen, laden Sie einfach die Datendatei.
%Vor%Verbinden Sie den Knopf mit der Bühne.
%Vor%Verbinden Sie einen Listener mit der Schaltfläche und registrieren Sie die Bühne, um Ereignisse zu empfangen.
%Vor% Die Methode render()
ist im Grunde ein Aufruf von stage.draw()
.
Dann müssen Sie nur den Bildschirm anordnen, wenn die Größe geändert wird.
%Vor%Wenn Ihr Bildschirm komplizierter ist, sollten Sie eine Tabelle verwenden.
Wenn Sie eine andere Schriftart verwenden möchten, können Sie die Schriftartdatei und die Bilddatei mit Hiero erstellen. Nachdem du das gemacht hast, musst du das neue Font-Image nehmen und den TexturePacker verwenden packen Sie es mit den anderen Skin-Ressourcen um.