Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Libgdx 初始化位图时如何解决stringIndexOutofBoundsException_Libgdx - Fatal编程技术网

Libgdx 初始化位图时如何解决stringIndexOutofBoundsException

Libgdx 初始化位图时如何解决stringIndexOutofBoundsException,libgdx,Libgdx,我正在学习使用libgdix开发游戏。我遵循《学习LibGDX游戏开发,第二版》一书。 我一直在使用位图字体 public class AssetsFonts { public final BitmapFont defaultSmall; public final BitmapFont defaultNormal; public final BitmapFont defaultBig; public AssetsFonts() { defaultS

我正在学习使用libgdix开发游戏。我遵循《学习LibGDX游戏开发,第二版》一书。 我一直在使用位图字体

public class AssetsFonts
{
    public final BitmapFont defaultSmall;
    public final BitmapFont defaultNormal;
    public final BitmapFont defaultBig;
    public AssetsFonts()
{
        defaultSmall = new BitmapFont(Gdx.files.internal("images/arial-15.fnt"),true);
        defaultNormal = new BitmapFont(Gdx.files.internal("images/arial-15.fnt"),true);
        defaultBig = new BitmapFont(Gdx.files.internal("images/arial-15.fnt"),true);
        defaultSmall.getRegion().getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
        defaultNormal.getRegion().getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
        defaultBig.getRegion().getTexture().setFilter(TextureFilter.Linear,TextureFilter.Linear);
    }
}
当我运行此命令时,我得到以下错误

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Error loading font file: images/arial-15.fnt
at com.badlogic.gdx.graphics.g2d.BitmapFont$BitmapFontData.load(BitmapFont.java:650)
at com.badlogic.gdx.graphics.g2d.BitmapFont$BitmapFontData.<init>(BitmapFont.java:465)
at com.badlogic.gdx.graphics.g2d.BitmapFont.<init>(BitmapFont.java:115)
at com.packtpub.libgdx.canyonbunny.game.Assets$AssetsFonts.<init>(Assets.java:125)
at com.packtpub.libgdx.canyonbunny.game.Assets.init(Assets.java:49)
at com.packtpub.libgdx.canyonbunny.CanyonBunnyMain.create(CanyonBunnyMain.java:22)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:143)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -7
at java.lang.String.substring(String.java:1918)
at com.badlogic.gdx.graphics.g2d.BitmapFont$BitmapFontData.load(BitmapFont.java:476)
... 7 more
线程“LWJGL应用程序”com.badlogic.gdx.utils.GdxRuntimeException中的异常:加载字体文件时出错:images/arial-15.fnt 在com.badlogic.gdx.graphics.g2d.BitmapFont$BitmapFontData.load(BitmapFont.java:650)上 位于com.badlogic.gdx.graphics.g2d.BitmapFont$BitmapFontData。(BitmapFont.java:465) 位于com.badlogic.gdx.graphics.g2d.BitmapFont.(BitmapFont.java:115) 在com.packtpub.libgdx.canyonbunny.game.Assets$AssetsFonts上(Assets.java:125) 位于com.packtpub.libgdx.canyonbuny.game.Assets.init(Assets.java:49) 在com.packtpub.libgdx.canyonbuny.canyonbunymain.create(canyonbunymain.java:22) 位于com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:143) 位于com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120) 原因:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-7 位于java.lang.String.substring(String.java:1918) 在com.badlogic.gdx.graphics.g2d.BitmapFont$BitmapFontData.load(BitmapFont.java:476)上 ... 还有7个
您真正的问题是找不到字体文件

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Error loading font file: images/arial-15.fnt
确保文件位于正确的位置,可能是android/assets/images,但这取决于您的项目设置


另外,请确保您运行的桌面版本使用android/assets作为工作文件夹。

例外情况是。实际上是说加载文件时出错了。内部异常显示加载时出现的错误:

Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -7
at java.lang.String.substring(String.java:1918)
at com.badlogic.gdx.graphics.g2d.BitmapFont$BitmapFontData.load(BitmapFont.java:476)
由于没有对String#substring的调用,这表明您正在使用旧版本的libgdx(这是意料之中的,因为最近才出现)。因此,我建议您每晚更新到最新版本(或者在使用版本时检查github历史记录),这样您就知道是哪个调用导致了错误


无论哪种方式,加载文件时子字符串调用失败的事实都很好地表明该文件可能已损坏或在另一方面不符合预期格式。假设您想要使用libgdx测试使用的字体,那么您可以下载正确的版本和所需的图像。请确保将图像与fnt文件放在同一文件夹中。

我检查了它,该文件位于正确的位置。还有什么问题?您是否正在运行android/assets作为工作文件夹的程序?@PhilAnderson请对此作出回应@姆杜森希尔:我没有更多的补充。LibGdx找不到文件images/arial-15.fnt-这就是问题所在。名称错误、位置错误或工作文件夹设置不正确。谢谢,我已将项目更新为1.6.3版本。现在它已成功运行。