Плиточная игра libGDX - не удалось загрузить файл (исключение в потоке приложения LWJGL)

Я следую учебному пособию по игре с плиткой Java, используя libGDX, и столкнулся со следующими ошибками:

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: gaming creation/herbe16.png
at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:140)
at com.badlogic.gdx.graphics.glutils.FileTextureData.prepare(FileTextureData.java:64)
at com.badlogic.gdx.graphics.Texture.load(Texture.java:142)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:133)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:112)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:108)
at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:119)
at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:104)
at com.poussins.screens.Play.show(Play.java:35)
at com.badlogic.gdx.Game.setScreen(Game.java:62)
at com.poussins.Poussins.create(Poussins.java:11)
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: File not found: gaming creation/herbe16.png (Internal)
at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:133)
at com.badlogic.gdx.files.FileHandle.length(FileHandle.java:563)
at com.badlogic.gdx.files.FileHandle.readBytes(FileHandle.java:218)
at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:137)
... 12 more

вот код, который я использую в классе Play:

package com.poussins.screens;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.maps.tiled.TiledMap;
import com.badlogic.gdx.maps.tiled.TmxMapLoader;
import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer;

public class Play implements Screen{

private TiledMap map;
private OrthogonalTiledMapRenderer renderer;
private OrthographicCamera camera;

@Override
public void render(float delta) {
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    renderer.setView(camera);
    renderer.render();
}

@Override
public void resize(int width, int height) {
    camera.viewportWidth = width;
    camera.viewportHeight = height;
    camera.update();        
}

@Override
public void show() {
    map = new TmxMapLoader().load("maps/map-Herbe-Goudron.tmx");

    renderer = new OrthogonalTiledMapRenderer(map);

    camera = new OrthographicCamera();
}

@Override
public void hide() {
    dispose();

}

@Override
public void pause() {
    // TODO Auto-generated method stub

}

@Override
public void resume() {
    // TODO Auto-generated method stub

}

@Override
public void dispose() {
    map.dispose();
    renderer.dispose();     
}

}

Чтобы поместить карту .tmx в проект Eclipse, я просто сделал копию (из папки, где находится карта .tmx) и вставил в проект Eclipse с именем «Poussins-Desktop/assets/maps». Я использовал те же действия (копировать и вставить), чтобы передать плитки .png тому же проекту Eclipse с именем «Poussins-Desktop/assets/maps» (это видно на скриншотах). В коде я не уверен в этой следующей строке:

map = new TmxMapLoader().load("maps/map-Herbe-Goudron.tmx");

потому что я не знаю, хорош ли путь к .tmx, но, похоже, он соответствует тому, что было сказано в учебнике ...

На самом деле в ошибке написано, что файл herbe16.png не может быть загружен. но этот файл представляет собой тайл со всей карты .tmx.

Я работаю над системой UBUNTU 13.10, Eclipse 3.8.1.

Я надеюсь, что кто-то мне поможет, и я заранее благодарю вас за внимание к моей проблеме.


person Rover Curiosity    schedule 02.05.2014    source источник
comment
Сообщение об ошибке довольно очевидно. Вы должны поместить файл herbe16.png в android/assets/creation/herbe16.png. Картинки тайла, разумеется, тоже подгружаются при загрузке карты.   -  person noone    schedule 03.05.2014


Ответы (2)


Хорошо, я не знаю, поможет ли это вам .. Я просто объявлял путь к своим файлам, не обращая внимания на заглавные буквы (я использую Windows7).

Теперь, когда я тестировал код как Java-приложение на своем рабочем столе, все шло гладко, но когда я пытался запустить его на эмуляторе или устройстве Android, он вылетал.

Оказывается, эмулятору и устройству нужен точный путь с заглавными буквами.

person nstsgr    schedule 07.10.2014
comment
Windows нечувствительна к регистру (в большинстве случаев), в отличие от большинства других операционных систем. Я полагаю, что многие люди не знают об этом. - person ; 07.10.2014

Возможно, это уже было решено, или ОП, возможно, отказался от этого, но я тоже столкнулся с этой ошибкой в ​​том же учебнике. Я решил проблему в моем случае. Возможно, ОП использовал .png другой битовой глубины (как в моем случае). .png, вызвавший ошибку, имел глубину 64 бита (вы можете проверить, щелкнув правой кнопкой мыши .png -> PROPERTIES -> DETAILS). Использование .png битовой глубины 32 позволило загрузке работать отлично. Я использовал фотошоп, чтобы создать свой набор плиток .png, и при создании нового файла установил его на 8 бит (рядом с цветовым режимом).

person edragon53    schedule 06.06.2016