I'm trying to load a Texture to libGDX and I'm getting a file not found exception.
Here's the code that's trying to load the .png file.
//Textures
private Texture tiles;
private TextureRegion grassImage;
private TextureRegion dirtImage;
private TextureRegion stoneImage;
//Entities
private Texture entities;
private TextureRegion playerImage;
public WorldRenderer(World world, boolean debug) {
this.world = world;
this.camera = new OrthographicCamera(CAMERA_WIDTH, CAMERA_HEIGHT);
this.camera.position.set(CAMERA_WIDTH/2f, CAMERA_HEIGHT/2f, 0);
this.camera.update();
this.debug = debug;
spriteBatch = new SpriteBatch();
loadTextures();
}
public void loadTextures() {
tiles = new Texture(Gdx.files.internal("tiles.png"));
grassImage = new TextureRegion(tiles, 0, 0, 32, 32);
dirtImage = new TextureRegion(tiles, 0, 64, 32, 32);
stoneImage = new TextureRegion(tiles, 64, 0, 32, 32);
entities = new Texture(Gdx.files.internal("entities.png"));
playerImage = new TextureRegion(entities, 0, 0, 32, 32);
}
public void render() {
spriteBatch.begin();
drawGrass();
drawDirt();
drawStone();
drawPlayer();
spriteBatch.end();
if (debug) {
drawDebug();
}
}
Here's the error message:
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: tiles.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:175)
at com.badlogic.gdx.graphics.Texture.create(Texture.java:159)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:133)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:122)
at com.mr.zen.level.WorldRenderer.loadTextures(WorldRenderer.java:62)
at com.mr.zen.level.WorldRenderer.<init>(WorldRenderer.java:58)
at com.mr.zen.screens.GameScreen.show(GameScreen.java:29)
at com.badlogic.gdx.Game.setScreen(Game.java:62)
at com.mr.zen.Zen.create(Zen.java:12)
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: tiles.png (Internal)
at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:132)
at com.badlogic.gdx.files.FileHandle.length(FileHandle.java:586)
at com.badlogic.gdx.files.FileHandle.readBytes(FileHandle.java:220)
at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:137)
... 12 more
The problem exists in the loadTextures() method. Can't find the file
tiles = new Texture(Gdx.files.internal("tiles.png"));
I've made sure to put the .png files in the assets folder of the android project files. I have no idea what's causing this; I've gotten this to work on other projects but this time around something went awry. Thanks for any help.
(For this solution is expected that the paths to your image files are correct.)
Sometimes I have this Couldn't load file problem when I add new images to my project. I don't know why, but my Desktop version of my LibGDX game doesn't update the folder Mygame-desktop/bin/data with my new images (which were added to Mygame-android/assets/data) when the project is built. (That is, every time I save a file, Eclipse builds the project, cause I set the option Project > Build Automatically.)
It should work, cause in LibGDX the Desktop and HTML projects have a link to the Android project assets folder. So, I was not suppose to need to copy manually my new images to Mygame-desktop/bin/data.
The solution, on Eclipse, is to clean (menu Project > Clean...) all LibGDX projects you use for your game, then the files in Mygame-android/assets/data will be copied to Mygame-desktop/bin/data properly.
If you're using Gradle, click the left mouse button in package explorer on Aassets -> Gradle -> Refresh All.
That's it =)
create new folder data in the assets folder of the android project and then access the file using Gdx.files.internal("data/tiles.png")
tiles = new Texture(Gdx.files.internal("data/tiles.png"));
Make a data folder in the assets folder and instead of using
tiles = new Texture(Gdx.files.internal("tiles.png"));
try this:
tiles = new Texture("data/tiles.png");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With