0
你好我有一個來自libGDX的AssetsManager
的問題。LibGDX:AssetsManager GdxRuntime拋出時出現的異常
我打開一個TTF
和Skin
有AssetsManager
並添加TTF
到Skin
。然後當我處置AssetsManager
它拋出一個異常。
我知道這個問題應該是皮膚和asssets管理器會配置相同的pixmap。但是有沒有辦法阻止這種情況發生?
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Pixmap already disposed!
at com.badlogic.gdx.graphics.Pixmap.dispose(Pixmap.java:315)
at com.badlogic.gdx.graphics.g2d.PixmapPacker$Page$1.dispose(PixmapPacker.java:384)
代碼:
FreeTypeFontLoaderParameter ttfParam = new FreeTypeFontLoaderParameter();
ttfParam.fontFileName = Const.TTF_ARIAL_PATH;
if (!manager.isLoaded(Const.TTF_ARIAL_SMALL, BitmapFont.class)) {
ttfParam.fontParameters.size = 16;
manager.load(Const.TTF_ARIAL_SMALL, BitmapFont.class, ttfParam);
}
if (!manager.isLoaded(Const.TTF_ARIAL_NORMAL, BitmapFont.class)) {
ttfParam.fontParameters.size = 32;
manager.load(Const.TTF_ARIAL_NORMAL, BitmapFont.class, ttfParam);
}
if (!manager.isLoaded(Const.TTF_ARIAL_LARGE, BitmapFont.class)) {
ttfParam.fontParameters.size = 64;
manager.load(Const.TTF_ARIAL_LARGE, BitmapFont.class, ttfParam);
}
if (!manager.isLoaded(Const.EDITOR_UI_SKIN, Skin.class)) {
SkinParameter skinParam = new SkinParameter(Const.EDITOR_UI_SKIN_PATH);
manager.load(Const.EDITOR_UI_SKIN, Skin.class, skinParam);
}
manager.finishLoading();
skin = manager.get(Const.EDITOR_UI_SKIN, Skin.class);
BitmapFont font = manager.get(Const.TTF_ARIAL_SMALL, BitmapFont.class);
skin.add(Const.TTF_ARIAL_SMALL, font, BitmapFont.class);
編輯:我解決它。但我不喜歡這個解決方案。
public void dispose() {
skin.remove(Const.TTF_ARIAL_SMALL, BitmapFont.class);
manager.dispose();
}