Java 如何避免libgdx中GlyphLayout的异常以在运行时获取字符串的宽度?

Java 如何避免libgdx中GlyphLayout的异常以在运行时获取字符串的宽度?,java,libgdx,Java,Libgdx,我使用的是libgdx的1.9.8版。我使用GlyphLayout计算运行时使用BitmapFont绘制的字符串的宽度。我需要的宽度,以中心的文字有关的线绘制的精灵 private BitmapFont tickMarkFont; private GlyphLayout tickGlyphLayout = new GlyphLayout(); tickMarkFont = manager.get("size16.ttf", BitmapFont.class); private float g

我使用的是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)
由于
非法状态异常:数组为空,同一方法有时也会崩溃

图形有时也会崩溃:

tickMarkFont.draw(batch, tickGlyphLayout, x, y);
我一直在画文本,崩溃只是偶然的,所以很难调试它。
我发现了一个类似的问题:

…但这没有帮助,因为我的字符串只有一行。它们通常是数字


有什么想法吗?

你使用多线程吗?没有,我知道ligbdx不是线程安全的。我使用scene2D。我正在查看源代码,GlyphLayout第141行不应该能够抛出NPE,因为
GlyphRun.color
是最后一个成员,而
ReflectionPool.Acquire
从不返回空对象。