Кажется, что tBounds1 и tBounds2 указывают на один и тот же объект.
Если вы пытаетесь проверить их, это происходит, что areSame ниже, это правда
boolean areSame = tBounds1 == tBounds2;
так tBounds1 и tBounds2 указывают на тот же объект. getWrappedBounds метод вызывается:
public TextBounds getWrappedBounds (CharSequence str, float wrapWidth) {
return getWrappedBounds(str, wrapWidth, cache.getBounds());
}
Не тот cache.getBounds. кэш создается при запуске при создании BitmapFont
private final BitmapFontCache cache;
так кэш это свойство текущего шрифта и поэтому, когда что-то будет изменено, оно также распространяется.
getWrappedBounds метод вызывает также другой метод:
public TextBounds getWrappedBounds (CharSequence str, float wrapWidth, TextBounds textBounds) {
// Just removed the lines here
textBounds.width = maxWidth;
textBounds.height = data.capHeight + (numLines - 1) * data.lineHeight;
return **textBounds**;
}
Этот метод в конце изменяет объект кэша BitmapFontCache.
Так что, если вы хотите, чтобы вычислить высоту 2 различных строк, вы можете присвоить его примитивным типам:
float height1 = font.getWrappedBounds("blah\nblah\nblah", 300);
float height2 = font.getWrappedBounds("blah", 300);
или если вам нужен полный BitmapFont.TextBounds объект, это:
BitmapFont.TextBounds tBounds1 = new BitmapFont.TextBounds(font.getWrappedBounds("blah\nblah\nblah", 300));
BitmapFont.TextBounds tBounds2 = new BitmapFont.TextBounds(font.getWrappedBounds("blah", 300));
Таким образом, вы ранили, чтобы tBounds1 и tBounds2 указывали на разные объекты.
Да, я пошел с присвоением примитивным типам, но я потратил час, пытаясь найти проблему в первую очередь. Ну что ж – PFort