Использование одного и того же шрифта разных размеров в libgdx

Я использую BitmapFonts, LabelStyles и Labels для своих текстов.

Я хочу изменить размер некоторых меток, поэтому я использую это:

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;

Но когда я хочу изменить размер другой метки, все метки, содержащие этот шрифт, изменяются (я создаю новый LabelStyle). Поэтому я изменяю размер метки вместо шрифта, но это не решает проблему, потому что размер метки не изменяется, есть идеи?


person Rudy_TM    schedule 12.03.2012    source источник


Ответы (2)


Вам нужно будет создать отдельные BitmapFonts и LabelStyle для каждой метки (или группы меток), если вы хотите масштабировать их независимо.

Из проверки исходного кода libgdx Label использует ссылку на BitmapFont из LabelStyle и передает ее в BitmapFontCache используется для внутренних целей; никакая глубокая копия не делается в любой момент, поэтому все они используют тот же BitmapFont, с которым вы создали LabelStyle.

person XiaoChuan Yu    schedule 14.03.2012
comment
Я думаю, что это будет лучший вариант :/ хотя на создание растровых шрифтов уходит много времени, спасибо :) - person Rudy_TM; 15.03.2012
comment
жаль, что label.setScale() бесполезен. Я также думаю, что это лучшее решение, хотя и некрасивое. Спасибо, что поделился. - person Don; 08.10.2014

Я использую libgdx 0.9.8 (поскольку это старый вопрос), и когда я создал метку как таковую:

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

Я могу изменить размер шрифта только этой метки с помощью:

lblA.setFontScale(3);

Это не влияет на другие мои ярлыки, которые были созданы таким же образом. Я установил для некоторых меток масштаб шрифта (2), и они в порядке (на них не влияет (3)). Однако я обнаружил, что стиль моего лейбла не такой уж «независимый». Им нужно назначить свой собственный LabelStyle, иначе вы получите поведение, о котором заявляете.

person K Jackson    schedule 11.02.2014
comment
Начиная с libGDX 1.5.6 (если не раньше), использование setFontScale(float) влияет на метки по отдельности, даже если они имеют один и тот же LabelStyle. - person James Skemp; 26.04.2015
comment
@JamesSkemp Есть ли что-то вроде глобальной настройки для масштабирования всего? На телефоне все нарисовано таким мелким (больше плотность пикселей), но это также означает, что я могу рисовать шрифт в 2 или даже 3 раза больше и экономить место на текстуре. - person Madmenyo; 06.06.2015
comment
Хороший вопрос @MennoGouw - боюсь, я не уверен :( Если бы это был я, я бы просто создал какую-то глобальную функцию или LabelStyle. - person James Skemp; 09.06.2015