Libgdx。由于FreeTypeFontGenerator,强制Skin json生成并加载所需的BitmapFont

时间:2015-12-04 17:15:47

标签: json fonts libgdx assets skin

好吧,我设法在我的json皮肤中使用我的assetManager生成的FreeType字体,但不是令人满意的方式。以下代码有效。

/* Manager loaders */
manager = new AssetManager();
InternalFileHandleResolver resolver = new InternalFileHandleResolver();
manager.setLoader(FreeTypeFontGenerator.class, new FreeTypeFontGeneratorLoader(resolver));
manager.setLoader(BitmapFont.class, ".ttf", new FreetypeFontLoader(resolver));

/* Generating the font with the assetManager */
FreetypeFontLoader.FreeTypeFontLoaderParameter param = new FreetypeFontLoader.FreeTypeFontLoaderParameter();
param.fontFileName = "UI/kenvector_future.ttf";
manager.load("myfont.ttf", BitmapFont.class, param);
manager.finishLoadingAsset("myfont.ttf");
BitmapFont newFont = manager.get("myfont.ttf");

/* Passing the name in the SkinLoader parameter */
ObjectMap<String, Object> oMap = new ObjectMap<String, Object>();
oMap.put("myfont", newFont);
manager.load("UI/skin.json", Skin.class, new SkinLoader.SkinParameter("UI/skin.atlas", oMap));

和json

{
    com.badlogic.gdx.graphics.g2d.BitmapFont: {
        arial-15: {
            file: com/badlogic/gdx/utils/arial-15.fnt
        }
    },
    com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
        textButton: {
            up: buttonLong_blue,
            down: buttonLong_blue_pressed,
            font: arial-15
        },
        textButton2: {
            up: buttonLong_beige,
            down: buttonLong_beige_pressed,
            font: myfont
        }
    },
}

它有效,但我想摆脱这段代码的生成部分(在“生成blablabla assetManager”下面)以及oMap部分。

我尝试在位图部分添加myfont,我尝试为FreeTypeFontLoader和FreeTypeFontLoader参数添加一个节点。它不起作用。

有没有办法实现我想要做的事情?

0 个答案:

没有答案