2017-08-05 6 views
0

J'ai d'abord chargé l'habillage sous la forme d'un fichier json. Dans le fichier, j'ai mis deux définitions BitmapFont ("font" et "big-font") et les ai laissées pratiquement vides (j'ai chargé un fichier ".fnt" factice pour empêcher l'analyseur de se plaindre). Je puis généré deux polices FreeType en utilisant le code suivant:L'habillage de Libgdx ne se met pas à jour lors du changement de police par programme

//start font generator 
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/button-font.ttf")); 
FreeTypeFontGenerator.FreeTypeFontParameter parameters = new FreeTypeFontGenerator.FreeTypeFontParameter(); 

//default font (the sizes are arbitrary, since it did not work...) 
parameters.size = 10; 
BitmapFont defaultFont = generator.generateFont(parameters); 

//big font 
parameters.size = 100; 
BitmapFont bigFont = generator.generateFont(parameters); 

Et les définir comme les polices de la peau comme si:

skin.add("font", defaultFont, BitmapFont.class); 
skin.add("big-font", bigFont, BitmapFont.class); 

Le problème est que l'IUG (en particulier le TEXTBUTTON, qui utilise le " font "font) ne semble pas se soucier de ce que j'ai fait par programme et continue à utiliser la police fictive que j'ai définie dans le fichier json.

Qu'est-ce que je fais mal? Existe-t-il un meilleur moyen d'intégrer les polices ttf et l'analyse de la peau json?

Merci d'avance pour toute aide.

Répondre

1

Suivez ces étapes:

  1. d'abord, créez votre police à partir d'un fichier TTF

    FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/button-font.ttf")); 
    FreeTypeFontParameter parameter = new FreeTypeFontParameter(); 
    parameter.size = 10; 
    BitmapFont defaultFont = generator.generateFont(parameter); 
    generator.dispose(); // don't forget to dispose to avoid memory leaks! 
    
  2. Créer une peau vierge à l'aide constructeur par défaut et ajoutez votre police à la peau.

    Skin skin = new Skin(); 
    skin.add("font",defaultFont); 
    
  3. Ajoutez votre fichier atlas à votre peau.

    skin.addRegion(new TextureAtlas(Gdx.files.internal("mySkin.atlas"))); 
    
  4. Chargez votre fichier JSON à votre peau.

    skin.load(Gdx.files.internal("mySkin.json")); 
    
  5. puis, dans votre fichier JSON vous pouvez référencer « police »

    { 
        font: font 
    }