web-dev-qa-db-fra.com

Skin par défaut LibGDX?

J'ai suivi ceci: https://code.google.com/p/table-layout/#Quickstart pour obtenir une petite introduction aux tableaux dans LibGDX. J'ai déjà expérimenté un peu avec des boutons.

Maintenant, j'ai ce code:

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

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

Mais il lance un NullPointerException parce que: No com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle registered with name: default

J'ai seulement ajouté mes boutons (ailleurs dans l'écran) dans la peau:

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

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

Ma question serait maintenant de quel type de textures une table a besoin et surtout, comment les utiliser avec la table?

42
AreusAstarte

En ce qui concerne l'interface utilisateur dans libGDX, vous trouverez son très différent de ce que vous auriez utilisé auparavant (yaml, json, xml, UI Builders, etc.).

Disposition du tableau - Voici comment l'interface utilisateur de Scene2d est structurée et formatée. Le lien que vous avez fourni est un excellent tutoriel, mais comme vous vous en êtes rendu compte, vous avez besoin d'un skin pour faire la plupart des choses.

Skin LibGDX - se compose de 3 choses, une image de pack de textures, un fichier de pack de textures et un Json pour configurer les styles. Vous pouvez également les générer par programme comme vous le faites, mais je trouve qu'il est beaucoup plus facile de simplement les charger à partir d'un fichier et de les utiliser. Si vous voulez en savoir plus sur la façon de créer des skins, ou de les modifier, etc. suivez ce lien: Skins .

Maintenant, revenons à l'exception que vous obtenez. En effet, le skin que vous avez créé n'a pas le json utilisé pour décrire les styles de divers éléments de l'interface utilisateur. Dans le cas de l'exception ci-dessus, l'étiquette à l'intérieur du champ de texte n'a pas de style par défaut.

Ce que vous pouvez simplement faire, c'est utiliser le modèle fourni dans le dossier tests:

  1. fichier Atlaspack
  2. fichier Json
  3. Image Atlaspack
  4. Image de police
  5. fichier de police

Placez ces fichiers dans le dossier des ressources de votre projet Android. Et puis, vous pouvez facilement charger ce skin avec une ligne de code:

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

Cela aura l'information manquante pour créer votre objet TextField, ainsi qu'un tas d'autres styles par défaut:

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

J'espère que cela vous aidera à démarrer. Il y a un certain nombre d'autres petites choses alors n'ayez pas peur de lire l'article Scene2d.UI sur le wiki pour plus d'informations.

Remarque: Vous pouvez utiliser gdx-tools artefact pour pouvoir utiliser l'habillage d'interface utilisateur par défaut prêt à l'emploi (peut être très utile pour les applications très petites/simples, pour le débogage, lorsque vous êtes vraiment pressé de avoir l'interface utilisateur visible, etc.).

85
Jyro117