LibGDX getBounds не возвращает правильную ширину
Я следую за ответом здесь: Как получить ширину строки в Libgdx?
У меня проблема в том, что getBounds, похоже, не возвращает правильную ширину. Мой код ниже должен ставить точки после конца строки, но вы можете увидеть точки, проливающие часть текста. Как получить правильную ширину текста?
for (HighScore s : this.scoresData){
font.draw(batch, s.name, x, y);
TextBounds nameBounds = font.getBounds(s.name);
font.draw(batch, s.value, (float) (KineticAssaultMain.WIDTH / 1.5f), y);
for (float i = (nameBounds.width + x); i < ((float)Screen.WIDTH / 1.5f);){
TextBounds dot = font.draw(batch, ".", i, y);
i += dot.width;
}
// go to the next line
y -= 32;
}
1 ответ
TextBounds, возвращаемый из getBounds, не обязательно будет действительным после вызова другого метода BitmapFont. Экземпляр TextBounds повторно используется внутри, чтобы избежать выделения. Это неудачная ошибка, но это результат того, что libgdx избегает GC.