我试图在文件中包含5行的5个单独的GlyphLayout
对象。我似乎无法正常工作,这是我填充字符串ArrayList
的方式
for(String line : Files.readAllLines(Paths.get("C:\\Users\\Owner\\Desktop\\debugger.txt"))) {
fileElements.add(line);
}
fileElements
是字符串的ArrayList
。还有一个ArrayList
的GlyphLayout
对象称为glyphs
这是我尝试呈现它的方式public void render(SpriteBatch batch) {
elapsedTime += Gdx.graphics.getDeltaTime();
if (elapsedTime > .1f) {
if (stringCounter < fileElements.get(count).length()) {
tmpString += fileElements.get(count).substring(stringCounter, stringCounter + 1);
glyphs.get(count).setText(font, tmpString);
elapsedTime = 0;
stringCounter++;
} else if (count < fileElements.size() - 1) {
count++;
stringCounter = 0;
}
}
for (int i = 0; i < glyphs.size(); i++)
font.draw(batch, glyphs.get(i), position.x, position.y + (10 * i));
}
elapsedTime就是这样,它一次只打印一个字母,因此看起来很平滑,但是会发生以下情况:
非常感谢您的帮助,我需要在单独的行中分别包含问题,答案1,答案2等
最佳答案
您可以使用单个BitmapFontCache简化此过程。您可以保持整个String完整无缺,并让字体缓存处理多行的布局。 (如果需要控制垂直间距,则可以使用font.getData().lineHeight = whatever;
。)因此,您只需要跟踪一个BitmapFontCache而不是多个GlyphLayouts和Strings。
cache = new BitmapFontCache(font);
要设置要绘制的字符串,请执行此操作。您需要计算字形的数量以知道要绘制多少个字形(由于空白,字形的数量与String的长度不匹配):
GlyphLayout glyphLayout = cache.setText(yourString, position.x, position.y);
glyphsToDraw = 0;
for (GlyphLayout.GlyphRun run : glyphLayout.runs) glyphsToDraw += run.glyphs.size;
然后渲染非常简单:
public void render(SpriteBatch batch) {
elapsedTime += Gdx.graphics.getDeltaTime();
cache.draw(batch, 0, Math.min(glyphsToDraw, (int)(elapsedTime * CHARS_PER_SECOND)));
}
关于java - 将文件中的每一行设置为java libgdx中的GlyphLayout,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34036318/