2012-03-12 5 views
14

J'utilise BitmapFonts, LabelStyles et Labels pour mes textes.Utilisation de la même police avec différentes tailles dans libgdx

Je veux redimensionner des étiquettes, donc j'utiliser ceci:

fontType.scale(-.6f); 

LabelStyle style = new LabelStyle(fontType, Color.WHITE); 

titleLabel = new Label("Points", style); 
titleLabel.setColor(Color.RED); 
titleLabel.x = 260; 
titleLabel.y = 310; 

Mais quand je veux redimensionner une autre étiquette, toutes les étiquettes contenant des polices qui Redimensionner (créer un nouveau LabelStyle). Donc, je redimensionne l'étiquette au lieu de la police, mais cela ne résout pas le problème, car il ne redimensionne pas l'étiquette, une idée?

Répondre

14

Vous devrez créer des BitmapFonts et LabelStyle séparés pour chaque Label (ou groupes d'étiquettes) si vous voulez les mettre à l'échelle indépendamment.

À partir de la vérification du code source libgdx, Label utilise la référence à BitmapFont de LabelStyle et la transmet à un BitmapFontCache utilisé en interne; aucune copie profonde n'est faite à aucun moment, donc ils utilisent tous le même BitmapFont avec lequel vous avez créé le LabelStyle.

+0

Je pense que ce sera la meilleure option:/bien qu'il consomme beaucoup de temps à créer les polices bitmap u.u merci :) –

+0

dommage que label.setScale() soit inutile. Je pense aussi que c'est la meilleure solution, même si c'est moche. Merci d'avoir partagé. – Don

13

J'utilise libgdx 0.9.8 (puisque c'est une vieille question), et quand je créé une étiquette en tant que tel:

lblA = new Label("A", skinA); 

Je peux redimensionner la police de simplement cette étiquette avec:

lblA.setFontScale(3); 

Cela n'affecte pas les autres étiquettes que j'ai créées de la même manière. J'ai mis certaines de mes étiquettes à l'échelle de la police (2), et celles-ci sont OK (non affectées par le (3)). Cependant, je trouve que le style de mon label n'est pas aussi «indépendant». Ils doivent avoir leur propre LabelStyle assigné, sinon vous obtenez le comportement que vous indiquez.

+0

À partir de libGDX 1.5.6 (sinon plus tôt), l'utilisation de 'setFontScale (float)' a un impact sur les étiquettes individuellement, même si elles partagent le même 'LabelStyle'. –

+0

@JamesSkemp Y a-t-il quelque chose comme un paramètre global pour tout faire évoluer? Tout est dessiné si petit sur un téléphone (plus de densité de pixels) mais cela signifie aussi que je peux m'en sortir en dessinant la police 2 ou même 3 fois plus grande et en économisant de l'espace de texture. – Madmenyo

+0

Bonne question @MennoGouw - Je crains de ne pas être sûr :(Si c'était moi, je pense que je créerais simplement une sorte de fonction globale ou 'LabelStyle'. –

Questions connexes