我正在尝试将纹理加载到libGDX,而我收到的文件未找到异常。
这是尝试加载.png文件的代码。
//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();
}
}
以下是错误消息:
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
loadTextures()方法中存在问题。找不到文件
tiles = new Texture(Gdx.files.internal("tiles.png"));
我已确保将.png文件放在android项目文件的assets文件夹中。我不知道造成这种情况的原因;我已经把它用于其他项目,但这次出现了问题。谢谢你的帮助。
答案 0 :(得分:10)
(对于此解决方案,预计图像文件的路径是正确的。)
当我向项目添加新图像时,有时会出现无法加载文件问题。我不知道为什么,但我的桌面版本的LibGDX游戏没有用我的新图像更新文件夹 Mygame-desktop / bin / data (已添加到 Mygame-android / assets / data )项目构建时。 (也就是说,每次保存文件时,Eclipse都会构建项目,因为我设置了选项项目&gt;自动构建。)
它应该工作,因为在LibGDX中,桌面和HTML项目都有一个指向Android项目资产文件夹的链接。所以,我不认为需要手动将我的新图像复制到 Mygame-desktop / bin / data 。
Eclipse上的解决方案是清理(菜单项目&gt;清理...... )您用于游戏的所有LibGDX项目,然后是 Mygame-android / assets中的文件/ data 将被正确复制到 Mygame-desktop / bin / data 。
答案 1 :(得分:6)
如果您正在使用Gradle,请在Aassets -> Gradle -> Refresh All.
就是这样=)
答案 2 :(得分:3)
在android项目的assets文件夹中创建新文件夹 data 然后使用 Gdx.files.internal(“data / tiles.png”)
访问该文件 tiles = new Texture(Gdx.files.internal("data/tiles.png"));
答案 3 :(得分:1)
在assets文件夹中创建一个数据文件夹,而不是使用
tiles = new Texture(Gdx.files.internal("tiles.png"));
试试这个:
tiles = new Texture("data/tiles.png");
答案 4 :(得分:0)
在刷新时在Package Explorer中单击鼠标左键或仅按F5。
这解决了我的问题。
答案 5 :(得分:0)
我使用当前的libgdx版本在android studio 2中运行此问题。当我在psp-cs6和/或cs15中保存为png时 - 它无法读取它。我无法回想起确切的错误消息,例如io无法读取流。所以我尝试在corel paint中再次保存它。同样的问题。然后将简单的paint实用程序与windows一起打包。不好。最后我下载了paint.net。现在我的工作流程只需要一个额外的步骤用psp等产生的任何png,几乎任何png libgdx grumps,我加载到paint.net,点击&#34;保存&#34;我很高兴。
本身并不是一个真正的解决方案,但可以完成工作。
看起来你很好,但我希望这有助于那里的人。 马克
答案 6 :(得分:0)
LibGDX可能不支持您的PNG个人资料。
我将它设置为require('dotenv').config();
const express = require('express');
const app = express();
const appPort = process.env.APP_PORT;
app.get('/', (req, res) => {
var campaign = req.query.campaign;
var click = req.query.param1;
if (campaign !== undefined && click !== undefined)
{
res.cookie('campaign', campaign, { maxAge: 86400 * 1000 });
res.cookie('click', click, { maxAge: 86400 * 1000 });
}
res.sendFile(__dirname + '/dist/index.html');
});
app.get('/members', (req, res) => res.sendFile(__dirname + '/dist/members.html'));
app.post('/members', function (req, res) {
res.cookie('firstName', req.body.firstname);
res.cookie('email', req.body.email);
res.sendFile(__dirname + '/dist/members.html');
});
app.listen(appPort, () => console.log(`App is running on ${appPort} port`));
app.use(express.static('dist'));
(与Krita),现在它可以正常工作。
在Krita,请访问:
图片&gt;属性&gt;资料