使用AssetManager类在LibGDX中加载TrueType字体

时间:2015-06-08 12:31:10

标签: java libgdx

我正在尝试使用libGDX的AssetManager类加载TrueType字体。

这是我初始化manager变量的方式:

manager = new AssetManager();

FileHandleResolver resolver = new InternalFileHandleResolver();
manager.setLoader(FreeTypeFontGenerator.class, new FreeTypeFontGeneratorLoader(resolver));
manager.setLoader(BitmapFont.class, ".ttf", new FreetypeFontLoader(resolver));

我创建了一个方法,搜索指定目录中的文件,然后使用此代码..(它在函数中,以路径作为参数)

FreeTypeFontLoaderParameter parameters = new FreeTypeFontLoaderParameter();
parameters.fontFileName = path;
parameters.fontParameters.size = 10;
manager.load(path, BitmapFont.class, parameters);

...将字体添加到加载队列,但是当我启动应用程序时,它会继续抛出异常:

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.GdxRuntimeException: Asset not loaded: assets/fonts\Test.ttf.gen
at com.badlogic.gdx.assets.AssetManager.handleTaskError(AssetManager.java:536)
at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:356)
at my.app(App.java:56)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:215)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Asset not loaded: assets/fonts\Test.ttf.gen
at com.badlogic.gdx.assets.AssetManager.get(AssetManager.java:127)
at com.badlogic.gdx.graphics.g2d.freetype.FreetypeFontLoader.loadSync(FreetypeFontLoader.java:40)
at com.badlogic.gdx.graphics.g2d.freetype.FreetypeFontLoader.loadSync(FreetypeFontLoader.java:20)
at com.badlogic.gdx.assets.AssetLoadingTask.handleAsyncLoader(AssetLoadingTask.java:139)
at com.badlogic.gdx.assets.AssetLoadingTask.update(AssetLoadingTask.java:89)
at com.badlogic.gdx.assets.AssetManager.updateTask(AssetManager.java:477)
at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:354)
... 3 more

App.java的第56行看起来像这样:

if(!this.resourceManager.getManager().update()) {

我可以从异常中读到名为'Test.ttf.gen'的资产无法加载,但我不知道在哪里可以得到它...我的意思是,我有.ttf文件,我认为这已经足够了

我搜索过谷歌,但似乎没有人遇到过类似的问题。

1 个答案:

答案 0 :(得分:0)

我只在Windows机器上遇到此问题。事实证明,我用来存储资产路径的类返回了具有特定于每个平台的路径分隔符的字符串。所以在Windows上它返回一个带正斜杠的路径字符串。在内部,LibGDX AssetManager类使用反斜杠但仍会加载带正斜杠的字符串。

问题是加载的资产存储在字典中,路径为带有正斜杠的字符串键。当您尝试使用反斜杠路径获取资产时,它无法在字典中找到密钥。

长话短说,请确保即使在Windows上,也要检查您的路径是否始终使用LibGDX的正斜杠。

我也可以提交错误报告。