2013-04-24 17 views
37

Ich habe das verfolgt: https://code.google.com/p/table-layout/#Quickstart, um eine kleine Einführung in Tabellen in LibGDX zu bekommen. Ich habe schon ein bisschen mit Knöpfen experimentiert.Standard Skin LibGDX?

Jetzt habe ich diesen Code:

Label introLabel = new Label("Skip Intro", skin); 
    TextField introText = new TextField("", skin); 

    table.add(introLabel); 
    table.add(introText).width(100); 
    table.row(); 

Aber es wirft mich ein NullPointerException weil: No com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle registered with name: default

Ich habe nur meine Knöpfe (von irgendwo sonst auf dem Bildschirm) in die Haut:

atlas = new TextureAtlas("assets/gui/buttons/alpha_generic_buttons.pack"); 

    skin = new Skin(); 
    skin.addRegions(atlas); 

Meine Frage wäre jetzt, welche Art von Texturen eine Tabelle benötigt und vor allem, wie ich sie mit der Tabelle verwende.

Antwort

79

Wenn es um UI in libGDX geht, werden Sie feststellen, dass es sehr anders ist als das, was Sie vorher benutzt hätten (yaml, json, xml, UI Builder usw.).

Tabellenlayout - So ist die Benutzeroberfläche von Scene2d strukturiert und formatiert. Der Link, den Sie zur Verfügung gestellt haben, ist ein großartiges Tutorial, aber wie Sie erkannt haben, brauchen Sie einen Skin, um die meisten Dinge zu tun.

LibGDX Skin - besteht aus 3 Elementen, einem Texturpaketbild, einer Texturpaketdatei und einem Json zum Einrichten der Stile. Sie können sie auch programmatisch erzeugen, wie Sie es tun, aber ich finde es viel einfacher, sie einfach aus einer Datei zu laden und zu verwenden. Wenn Sie mehr darüber erfahren möchten, wie Sie Skins erstellen oder bearbeiten, folgen Sie diesem Link: Skins.

Jetzt zurück zu der Ausnahme, die Sie erhalten. Dies liegt daran, dass die von Ihnen erstellte Skin nicht über den JSON verfügt, mit dem die Stile für verschiedene UI-Elemente beschrieben werden. Im Fall der obigen Ausnahme hat die Beschriftung innerhalb des Textfelds keinen Standardstil.

Was können Sie einfach tun, ist die Vorlage in den Tests Ordner bereitgestellt verwenden:

  1. Atlaspack File
  2. Json File
  3. Atlaspack Image
  4. Font Image
  5. Font File

Legen Sie diese Dateien in den Ordner "Assets" Ihres Android-Projekts. Und dann kann man leicht Skin lädt mit einer Zeile Code:

Skin uiSkin = new Skin(Gdx.files.internal("uiskin.json")); 

Dies wird das fehlende Stück von Informationen, um Ihr Textfield-Objekt zu machen, sowie eine Reihe von anderen Standard-Stilen:

com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: { 
    default: { font: default-font, fontColor: white }, 
} 

Hoffentlich hilft dies Ihnen den Einstieg. Es gibt eine Reihe von anderen kleinen Dingen, also haben Sie keine Angst, über den Scene2d.UI Artikel im Wiki für weitere Informationen zu schauen.

Hinweis: können Sie gdx-tools Artefakt verwenden zu können, the default UI skin verwenden out-of-the-box (kann für sehr kleine/einfache Anwendungen sehr nützlich sein, für das Debuggen, wenn Sie in einem echten Eile sind zu die Benutzeroberfläche sichtbar machen usw.).

+0

Wow, danke für die tolle Antwort :) Das einzige, was ich nicht wirklich meinen Kopf wickeln kann, ist, was das letzte Stück Code ist? : o – AreusAstarte

+4

@AreusAstarte es ist die JSON Beschreibung des Stils, siehe den Punkt 2 in der Dateiliste oben – noncom

+1

noncom ist richtig, ich habe gerade darauf hingewiesen, dass Linie von Json, weil es die genaue ist, die Sie Probleme verursacht :) – Jyro117