46 votes

Peau par défaut LibGDX ?

J'ai suivi cette affaire : https://code.google.com/p/table-layout/#Quickstart pour avoir une petite introduction aux tables dans LibGDX. J'ai déjà expérimenté un peu avec les 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 jette un NullPointerException parce que : No com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle registered with name: default

J'ai seulement ajouté mes boutons (provenant d'un autre endroit de l'écran) dans le skin :

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

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

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

91voto

Jyro117 Points 2549

En ce qui concerne l'interface utilisateur de libGDX, vous constaterez qu'elle est très différente de ce que vous avez utilisé auparavant (yaml, json, xml, UI Builders, etc.).

Mise en page de la table - C'est ainsi que l'interface utilisateur de Scene2d est structurée et formatée. Le lien que vous avez fourni est un excellent tutoriel, mais comme vous l'avez compris, vous avez besoin d'un skin pour faire la plupart des choses.

Peau LibGDX - se compose de trois éléments : une image de pack de textures, un fichier de pack de textures et un fichier 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 les charger simplement depuis un fichier et de les utiliser. Si vous voulez en savoir plus sur la façon de créer des skins, de les modifier, etc., suivez ce lien : Skins .

Revenons maintenant à l'exception que vous obtenez. Cela est dû au fait que le skin que vous avez créé ne contient pas le json utilisé pour décrire les styles des différents é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 faire simplement, c'est utiliser le modèle fourni dans le dossier des tests :

  1. Dossier Atlaspack
  2. Fichier Json
  3. Image de l'Atlaspack
  4. Image de la police
  5. Fichier de police

Placez ces fichiers dans le dossier assets de votre projet Android. Vous pourrez alors facilement charger ce skin avec une seule ligne de code :

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

Il contient les informations manquantes pour créer votre objet TextField, ainsi qu'un certain nombre 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 existe un certain nombre d'autres petites choses, alors n'hésitez pas à consulter le site Web de l'UE. Scene2d.UI sur le wiki pour plus d'informations.

Note : Vous pouvez utiliser gdx-tools artefact pour pouvoir utiliser l'habillage par défaut de l'interface utilisateur 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é d'avoir l'interface utilisateur visible, etc).

0 votes

Wow, merci pour cette réponse géniale :) La seule chose que je n'arrive pas à comprendre, c'est ce qu'est le dernier morceau de code :o

5 votes

@AreusAstarte c'est la description json du style, voir l'élément 2 dans la liste des fichiers ci-dessus.

2 votes

Noncom a raison, j'ai juste indiqué cette ligne de json parce que c'est celle qui vous a causé des problèmes :)

1voto

Oxydeme Points 19

Ou si vous voulez créer votre propre peau, Raleus a créé un éditeur de peau, L'interface utilisateur est très conviviale, simple à utiliser et les résultats sont impressionnants. https://github.com/raeleus/skin-composer Une fois que vous y aurez navigué un peu, vous comprendrez beaucoup mieux les skins et comment les utiliser.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X