我尝试使用 AssetManager
加载两个 BitmapFontsprivate 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 ?
答案 0 :(得分:2)
AssetDescriptor名称和fontFileName之间存在差异:fontFileName是* .ttf文件的路径。该名称对于资产是唯一的。您可以使用myfont32作为字体的名称,大小为32,另一个用于其他大小。