Ошибка при загрузке файла TTF - Libgdx

Я создал проект Android с LibgdGdx, в котором я создаю класс AssetManager, в который загружаю все необходимые ресурсы, но когда я запускаю проект, у меня возникает ошибка при загрузке файла ttf. Код AssetManager:

 public AssetManager manager;

public AssetsManager(){

    manager = new AssetManager();
    loadAssets();
}


public void loadAssets(){
    loadTtf("assets/Birds.TTF"); 
}

void loadTtf(String path){
    FileHandleResolver resolver = new InternalFileHandleResolver();
    manager.setLoader(FreeTypeFontGenerator.class, new FreeTypeFontGeneratorLoader(resolver));
    manager.setLoader(BitmapFont.class, "assets/Birds.TTF", new FreetypeFontLoader(resolver));

    FreetypeFontLoader.FreeTypeFontLoaderParameter font = new FreetypeFontLoader.FreeTypeFontLoaderParameter();
    font.fontFileName = path;
    font.fontParameters.size = 20;
    manager.load(path , BitmapFont.class, font);
}

Я пытаюсь загрузить файл ttf через этот код

BitmapFont font = manager.manager.get("assets/Birds.TTF",BitmapFont.class);

Часть ошибки у меня:

com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.GdxRuntimeException: Error reading file: assets/Birds.TTF (Internal)
                                                               at com.badlogic.gdx.assets.AssetManager.handleTaskError(AssetManager.java:579)
                                                               at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:380)
                                                               at com.poum.game.Main.render(Main.java:33)
                                                               at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:459)
                                                               at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1649)
                                                               at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1354)

Как я уже сказал, проект работает на Android.

Спасибо тебе за все


person PABLO FERNANDEZ    schedule 24.06.2017    source источник
comment
где ваш Birds.TTF файл? Это находится в папке с активами модуля Android?   -  person Abhishek Aryan    schedule 24.06.2017
comment
Да, файл находится в папке с ресурсами модуля Android.   -  person PABLO FERNANDEZ    schedule 24.06.2017


Ответы (1)


String path="Birds.TTF";     //can be inside nested folder
String fileName = "Birds.TTF" ;   // it can be any name with extension, will use to load and retrieve

Загрузите таким образом:

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

FreetypeFontLoader.FreeTypeFontLoaderParameter parms = new FreetypeFontLoader.FreeTypeFontLoaderParameter();
parms.fontFileName = path;    // path of .TTF file where that exist 
parms.fontParameters.size = 20;
manager.load(fileName, BitmapFont.class, parms);   // fileName with extension, sameName will use to get from manager

manager.finishLoading();  //or use update() inside render() method

Получить шрифт из AssetManager

BitmapFont font=manager.get(fileName,BitmapFont.class);

ИЗМЕНИТЬ

Из вашего скриншота видно, что ваше имя файла Birds.ttf, а не Birds.TTF

так что измени

String path = "Birds.ttf";
String fileName = "Birds.ttf"

Файловая система Android чувствительна к регистру.

Выполнить конфигурацию для модуля рабочего стола должно быть так:

введите здесь описание изображения

person Abhishek Aryan    schedule 24.06.2017
comment
Можете ли вы показать папку с вашими активами вместе с вашими ресурсами на скриншоте. - person Abhishek Aryan; 25.06.2017