LibGdx Assetmanager загружает неверную строку

Когда я пытаюсь загрузить свой TextureAtlas через AssetManager, он выдает следующее исключение:

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.GdxRuntimeException: Error reading pack file: data/atlas/mainmenu
at com.badlogic.gdx.assets.AssetManager.handleTaskError(AssetManager.java:517)
at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:351)
at com.badlogic.gdx.assets.AssetManager.finishLoading(AssetManager.java:372)
at nl.gameplayinc.tubularballs.util.Assets.load(Assets.java:31)
at nl.gameplayinc.tubularballs.util.Assets.create(Assets.java:24)
at nl.gameplayinc.tubularballs.screen.SplashScreen.show(SplashScreen.java:28)
at com.badlogic.gdx.Game.setScreen(Game.java:62)
at nl.gameplayinc.tubularballs.TubularBalls.setScreen(TubularBalls.java:70)
at nl.gameplayinc.tubularballs.TubularBalls.create(TubularBalls.java:27)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Error reading pack file: data/atlas/mainmenu
at com.badlogic.gdx.graphics.g2d.TextureAtlas$TextureAtlasData.<init>(TextureAtlas.java:177)
at com.badlogic.gdx.assets.loaders.TextureAtlasLoader.getDependencies(TextureAtlasLoader.java:58)
at com.badlogic.gdx.assets.loaders.TextureAtlasLoader.getDependencies(TextureAtlasLoader.java:34)
at com.badlogic.gdx.assets.AssetLoadingTask.handleSyncLoader(AssetLoadingTask.java:98)
at com.badlogic.gdx.assets.AssetLoadingTask.update(AssetLoadingTask.java:87)
at com.badlogic.gdx.assets.AssetManager.updateTask(AssetManager.java:454)
at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:349)
... 9 more
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Invalid line: mainmenu.png
at com.badlogic.gdx.graphics.g2d.TextureAtlas.readValue(TextureAtlas.java:425)
at com.badlogic.gdx.graphics.g2d.TextureAtlas$TextureAtlasData.<init>(TextureAtlas.java:110)
... 15 more

Когда я нормально загружаю свой атлас (используя: new TextureAtlas("data/atlas/mainmenu/mainmenu.atlas");), он работает просто отлично. Мне нужно, чтобы менеджер активов загружал мои файлы через разрешение файлов, поэтому я сделал следующую настройку:

public void create()
{
    Resolution _568x1136 = new Resolution(568, 1136, ".568x1136");

    ResolutionFileResolver resolver = new ResolutionFileResolver(new InternalFileHandleResolver(), _568x1136);

    manager = new AssetManager();
    manager.setLoader(TextureAtlas.class, new TextureAtlasLoader(resolver));
    load();
}

private void load()
{
    manager.load("data/atlas/mainmenu", TextureAtlas.class);
    manager.finishLoading();
}

Исключение происходит manager.load("data/atlas/mainmenu", TextureAtlas.class);

Мой файл .atlas находится в каталоге assets\data\atlas\mainmenu\mainmenu.atlas. PNG, на который он указывает в первой строке, — это mainmenu.png, который находится в том же каталоге, и поскольку он может найти строку с «mainmenu.png Я предполагаю, что он также нашел правильный файл атласа.

Я также пытался добавить расширения разрешения (mainmenu.atlas.568x1136 и mainmenu.png.568x1136), но с тем же результатом.

Я искал много мест для помощи, но нигде не могу найти свою проблему.

Если бы кто-то мог мне помочь, я был бы очень признателен!

Кроме того, я не могу найти много информации о ResolutionFileResolver. Какие файлы должны иметь расширение разрешения (я указал его как для своего атласа, так и для файла img), и есть ли более простой способ создать ресурсы разрешения, чем вручную добавить расширение?

EDIT Добавлен mainmenu.atlas

mainmenu.png
format: RGBA8888
filter: Nearest,Nearest
repeat: none
background
rotate: false
xy: 2, 617
size: 640, 1136
orig: 640, 1136
offset: 0, 0
index: -1
btnbuy
rotate: false
xy: 2, 537
size: 414, 78
orig: 414, 78
offset: 0, 0
index: -1
btncredits
rotate: false
xy: 2, 457
size: 414, 78
orig: 414, 78
offset: 0, 0
index: -1
btnhighscores
rotate: false
xy: 2, 58
size: 414, 77
orig: 414, 77
offset: 0, 0
index: -1
btninfo
rotate: false
xy: 2, 377
size: 414, 78
orig: 414, 78
offset: 0, 0
index: -1
btnmute
rotate: false
xy: 418, 537
size: 94, 78
orig: 94, 78
offset: 0, 0
index: -1
btnnewgame
rotate: false
xy: 2, 297
size: 414, 78
orig: 414, 78
offset: 0, 0
index: -1
btnrate
rotate: false
xy: 755, 1329
size: 58, 424
orig: 58, 424
offset: 0, 0
index: -1
btnresumegame
rotate: false
xy: 2, 217
size: 414, 78
orig: 414, 78
offset: 0, 0
index: -1
btntutorial
rotate: false
xy: 2, 137
size: 414, 78
orig: 414, 78
offset: 0, 0
index: -1
btnunmute
rotate: false
xy: 815, 1675
size: 94, 78
orig: 94, 78
offset: 0, 0
index: -1
display
rotate: false
xy: 2, 2
size: 343, 54
orig: 343, 54
offset: 0, 0
index: -1
longtube
rotate: false
xy: 644, 617
size: 109, 1136
orig: 109, 1136
offset: 0, 0
index: -1

person Myth1c    schedule 10.11.2013    source источник


Ответы (1)


«Когда я обычно загружаю свой атлас (используя: new TextureAtlas («data/atlas/mainmenu/mainmenu.atlas»);), он работает просто отлично».

"Исключение возникает в файле manager.load("data/atlas/mainmenu", TextureAtlas.class);"

"Мой файл .atlas находится в каталоге assets\data\atlas\mainmenu\ mainmenu.atlas"

Добавьте .atlas к пути, если ваш пакетный файл называется mainmenu.atlas, а не просто mainmenu.

person noone    schedule 10.11.2013
comment
Это сработало, хотя и странно, поскольку в примерах, которые я нашел, никто не добавлял расширение .atlas.... - person Myth1c; 10.11.2013
comment
Я думаю, это потому, что в более ранних версиях инструмента TexturePacker к файлу атласа не добавлялся файловый суффикс. Но теперь они называются xxx.atlas или xxx.pack автоматически. - person noone; 10.11.2013
comment
Можете ли вы сказать мне, какие файлы должны иметь какое расширение для преобразователя разрешения? Как видно из моего кода, в настоящее время я передаю разрешение .568x1136 распознавателю. - person Myth1c; 12.11.2013
comment
@ Myth1c На самом деле это должен быть новый вопрос. Но он уже существует: stackoverflow.com/questions /14674282/ - person noone; 12.11.2013
comment
Да, я только что опубликовал новый вопрос для него на stackoverflow.com /вопросы/19915535/. Я также нашел этот вопрос и просмотрел AssetManager, но мне не удалось найти какие-либо фактические файлы с расширениями, которые они там используют (скачал libgdx-master и выполнил поиск по всему репо). - person Myth1c; 12.11.2013