使用一个ttf文件的多个BitmapFonts

时间:2016-03-29 13:25:46

标签: libgdx

我尝试使用 AssetManager

加载两个 BitmapFonts
private void load(AssetManager assetManager) {
    FileHandleResolver resolver = new InternalFileHandleResolver();
    assetManager.setLoader(FreeTypeFontGenerator.class, new FreeTypeFontGeneratorLoader(resolver));
    assetManager.setLoader(BitmapFont.class, ".ttf", new FreetypeFontLoader(resolver));

    assetManager.load(createDescriptor("myFont.ttf", 70, Color.WHITE, Color.BLACK, 1););
    assetManager.load(createDescriptor("myFont.ttf", 50, Color.BLACK, Color.WHITE, 10););
}


public static AssetDescriptor createDescriptor(String fontPath, int fontSize, Color fontColor, Color borderColor, int borderSize) {
    FreetypeFontLoader.FreeTypeFontLoaderParameter parameter = new FreetypeFontLoader.FreeTypeFontLoaderParameter();
    parameter.fontFileName = fontPath;
    parameter.fontParameters.size = fontSize;
    parameter.fontParameters.color = fontColor;
    parameter.fontParameters.borderColor = borderColor;
    parameter.fontParameters.borderWidth = borderSize;
    return new AssetDescriptor<BitmapFont>(parameter.fontFileName, BitmapFont.class, parameter);
}

不幸的是,由于文件名相同, AssetManager 使用名为 isLoaded 的方法忽略加载第二个 BitmapFont

我想扩展 AssetManager ,不仅要检查文件名,还要检查 AssetLoaderParameters 是否相等。但是 AssetManager 不希望被扩展。

是否有另一种方法可以使用一个 AssetManager 和一个.ttf源文件加载多个 BitmapFonts

1 个答案:

答案 0 :(得分:2)

AssetDescriptor名称和fontFileName之间存在差异:fontFileName是* .ttf文件的路径。该名称对于资产是唯一的。您可以使用myfont32作为字体的名称,大小为32,另一个用于其他大小。