2013-04-24 27 views
37

Ho seguito questo: https://code.google.com/p/table-layout/#Quickstart per ottenere una piccola introduzione alle tabelle in LibGDX. Ho già sperimentato un po 'con i pulsanti.Default Skin LibGDX?

ora ho questo codice:

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

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

Ma mi tiri un NullPointerException perché: No com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle registered with name: default

Ho solo aggiunto i miei tasti (da qualche altra parte nella schermata) nella pelle:

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

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

la mia domanda sarebbe ora che tipo di texture un tavolo bisogni e la maggior parte di tutti, come li uso con il tavolo.

risposta

79

Quando si tratta di UI in libGDX, troverete molto diverso da quello che avreste usato prima (yaml, json, xml, UI Builders, ecc.).

Layout tabella - Ecco come l'interfaccia utente di Scene2d è strutturata e formattata. Il link che hai fornito è un ottimo tutorial, ma come hai capito, hai bisogno di una pelle per fare la maggior parte delle cose.

LibGDX Skin - costituito da 3 elementi, un'immagine del pacchetto texture, un file del pacchetto texture e un Json per impostare gli stili. Puoi anche generarli a livello di codice come stai facendo, ma trovo molto più semplice caricarli semplicemente da un file e utilizzarli. Se volete saperne di più su come rendere le pelli, o di modificarli, ecc segui questo link: Skins.

Ora, tornando alla eccezione si stanno ottenendo. Questo perché la skin che hai creato non ha il json usato per descrivere gli stili per i vari elementi dell'interfaccia utente. Nel caso dell'eccezione precedente, l'etichetta all'interno del campo di testo non ha uno stile predefinito.

Cosa si può semplicemente fare è utilizzare il modello fornito nella cartella test:

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

Mettere questi file nella cartella attivi del progetto Android. E allora si può facilmente caricare questo pelle con una sola riga di codice:

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

questo avrà il pezzo mancante di informazioni per rendere il vostro oggetto TextField, così come un sacco di altri stili di default:

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

Speriamo che questo aiuta ad iniziare. Ci sono un certo numero di altre piccole cose quindi non abbiate paura di guardare oltre l'articolo Scene2d.UI sul wiki per maggiori informazioni.

Nota: È possibile utilizzaregdx-tools artefatto per essere in grado di utilizzare the default UI skin out-of-the-box (può essere molto utile per le piccole applicazioni semplici /, per il debug, quando sei in una vera e propria corsa per avere l'interfaccia utente visibile, ecc.).

+0

Wow, grazie per la splendida risposta :) L'unica cosa che non riesco a capire è l'ultimo pezzo di codice? : o – AreusAstarte

+4

@AreusAstarte è la descrizione json dello stile, vedere l'elemento 2 nell'elenco dei file sopra – noncom

+1

il noncom è corretto, ho appena indicato quella riga di json perché è l'esatto che ti causava problemi :) – Jyro117