2016-07-07 15 views
1

Ich bin verwirrt darüber, wie ich ein scene2d-Label erstellen werde, weil es eine Haut braucht, wofür brauche ich eine Haut? Ich benutze sie nur auf Tasten wie folgt aus:Wie erstelle ich Scene2d Label?

TextureAtlas btnAtlas = new TextureAtlas(Gdx.files.internal("myAtlas")); 
Skin skin = new Skin(btnAtlas); 
buttonStyle.up = skin.getDrawable("btnUP"); 

Ich bin verwirrt, weil, wenn ich an einem Etikett denke, denke ich an Schrift und Text nicht ein Atlas oder der Haut. Ich sah Code online und sie verwendeten eine .json-Datei und keine .atlas-Datei, die mich mehr verwirrt, wie erstelle ich eine .json-Datei, die die Schriftart enthält, die ich verwenden möchte? Was ist die .json-Datei? Ich verwende auch das Libgdx-Framework und wenn ich eine Atlas-Datei erstelle, benutze ich einfach LIbgdx Texturpacker, um eine Gruppe von Texturen zusammenzustellen.

+0

https://github.com/libgdx/libgdx/ providin wiki/Skin – Tenfour04

+1

Du brauchst eigentlich keine Haut. Sie könnten einen LabelStyle übergeben, der auf die gewünschte Schriftart verweist. – Tenfour04

+0

Skin ist nur eine bequeme Möglichkeit, alle Ihre Stile für alle Ihre UI von einem Ort aus verfügbar zu machen. Dies ist besonders nützlich, wenn Sie eine komplexe Benutzeroberfläche mit vielen Stilen haben, da Sie die Stile einfach mit JSON definieren können. – Tenfour04

Antwort

1

So fangen wir von vorne an:

  • JSON-Dateien

    Die JSON ist ein Textformat - eine Alternative für die XML. Es sieht aus wie die JavaScript-Objektnotation. JSONes werden zur Übertragung von Daten verwendet, aber auch zum Serialisieren von Objekten - LibGDX hat bereits eine schöne JSON-Unterstützung.

    JSON verwendet {} und : Zeichen und alles wird als Text gehalten. Beispiel:

    { 
        "name" : "Mike", 
        "city" : "London" 
        "address" : { 
         "road" : "Green", 
         "number" : "5" 
        } 
    } 
    

    es zu einigen Person Klassenobjekt analysiert werden könnten oder durch die Verwendung einiger Tasten zugegriffen wird (so etwas wie number = person[address][number] in Pseudo-Code)

  • Font

    eine Schriftart definieren Sie werden brauchen .fnt Datei (generiert mit zum Beispiel Hiero). Libgdx verwendet BitmapFonts - gerenderte Fonts mit Codes (man kann darüber nachdenken wie über Texturatlases). Es gibt einige Verfahren direkt Font-Dateien wie Ttf zu verwenden, aber im Allgemeinen ist es nicht sinnvoll, wenn Sie

    haben nicht
  • Haut

    Die Haut ist ein Objekt, das Ihre Scene2D Instanzen definiert. Sie können mit Skin beschreiben, wie Ihre Schaltflächen aussehen werden oder welche Hintergrundgrafik TextButton haben wird. Sie können es direkt erstellen (wie Sie es bereits tun - indem Sie eine Instanz new Skin() erstellen und Zeichensätze, Stile usw. hinzufügen) oder indem Sie eine JSON-Datei verwenden, in der alle diese Informationen enthalten sind.

    Die JSON-Datei wird zu Skin analysiert und kann jetzt verwendet werden. Ich kann this tutorial empfehlen, um zu erfahren, wie Häute arbeiten, aber in einer kurzen Zusammenfassung sind die Schritte:

    1. um TextureAtlas (unter Verwendung von TexturePacker natürlich) mit allen Grafiken zu erstellen, die Sie Scene2D UI-Sachen verwenden werden

    2. um eine geeignete JSON-Datei mit Definitionen zu erstellen (sehen Sie sich das Tutorial an)

    3. Um .atlas, .png und .skin Dateien die gleichen zu nennen - so haben Sie etwas wie: skin.atlas, skin.json, Haut.png

    Beachten Sie, dass Haut JSON ist nicht traditionelle JSON - es ist nicht " Zeichen hat, so dass Sie

    down: round-down, up: round, 
    

    statt

    "down": "round-down", "up": "round", 
    

    Auch round-down oder round sind Namen haben Ihrer Drawables in Ihrem Atlas


Wenn Sie Haut JSON haben Erstellen Sie einfach Instanz es ist und dann Buttons, Aufkleber usw. Erstellen von Haut-Instanz und Artnamen wie

Button b = new Button(skin, "registerButton");