我正在使用libgdx的1.9.8版本。我使用GlyphLayout来计算我在运行时使用BitmapFont绘制的字符串的宽度。我需要宽度使文本相对于用精灵绘制的线条居中。
private BitmapFont tickMarkFont;
private GlyphLayout tickGlyphLayout = new GlyphLayout();
tickMarkFont = manager.get("size16.ttf", BitmapFont.class);
private float getTickLabelSize(String text) {
tickGlyphLayout.setText(tickMarkFont, text);
return tickGlyphLayout.width;
}
但是,我使用此类获得了多个异常。由于setText
上的空指针异常,我偶尔会崩溃:
... java.lang.NullPointerException:
at com.badlogic.gdx.graphics.g2d.GlyphLayout.setText(GlyphLayout.java:141)
at com.badlogic.gdx.scenes.scene2d.ui.Label.layout(Label.java:202)
at com.badlogic.gdx.scenes.scene2d.ui.Widget.validate(Widget.java:88)
at com.badlogic.gdx.scenes.scene2d.ui.Table.layout(Table.java:785)
at com.badlogic.gdx.scenes.scene2d.ui.WidgetGroup.validate(WidgetGroup.java:115)
at com.badlogic.gdx.scenes.scene2d.ui.Button.draw(Button.java:198)
at com.badlogic.gdx.scenes.scene2d.ui.TextButton.draw(TextButton.java:83)
at com.badlogic.gdx.scenes.scene2d.Group.drawChildren(Group.java:110)
at com.badlogic.gdx.scenes.scene2d.Group.draw(Group.java:57)
at com.badlogic.gdx.scenes.scene2d.Group.drawChildren(Group.java:110)
at com.badlogic.gdx.scenes.scene2d.Group.draw(Group.java:57)
at wall.mcv.actors.Scatterplot.draw(Scatterplot.java:379)
由于IllegalStateException: Array is empty
,同样的方法有时也会崩溃。
图纸有时会崩溃:
tickMarkFont.draw(batch, tickGlyphLayout, x, y);
我一直在绘制文本,崩溃只是偶然的,所以很难调试它。
我发现了一个类似的问题:(Libgdx 1.6.1) BitmapFontCache.draw crashing due to index out of bounds
...但这并没有帮助,因为我的字符串只有1行。它们通常是数字。
有什么想法吗?