我在将LibGDX与资产目录一起使用时遇到问题。我实际上是在构建项目文件夹this way。我跟随this tutorial学习。 (我在Eclipse上工作) 我使用的代码是:
package com.mygdx.game;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.graphics.g2d.TextureAtlas.AtlasRegion;
import com.badlogic.gdx.utils.Timer;
import com.badlogic.gdx.utils.Timer.Task;
public class MyGdxGame implements ApplicationListener {
private SpriteBatch batch;
private TextureAtlas textureAtlas;
private Sprite sprite;
private int currentFrame = 1;
private String currentAtlasKey = new String("0001");
@Override
public void create() {
batch = new SpriteBatch();
// THE PROBLEM IS UNDER THIS LINE
textureAtlas = new TextureAtlas(Gdx.files.internal("spritesheet.atlas"));
AtlasRegion region = textureAtlas.findRegion("0001");
sprite = new Sprite(region);
sprite.setPosition(120, 100);
sprite.scale(2.5f);
Timer.schedule(new Task(){
@Override
public void run() {
currentFrame++;
if(currentFrame > 20)
currentFrame = 1;
// ATTENTION! String.format() doesnt work under GWT for god knows why...
currentAtlasKey = String.format("%04d", currentFrame);
sprite.setRegion(textureAtlas.findRegion(currentAtlasKey));
}
}
,0,1/30.0f);
}
@Override
public void dispose() {
batch.dispose();
textureAtlas.dispose();
}
@Override
public void render() {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
sprite.draw(batch);
batch.end();
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
(如果该代码很难阅读,我将使用与下面链接的教程完全相同的代码)
我的软件包浏览器如下所示: imgur link
它返回我:
线程“ LWJGL应用程序”中的异常com.badlogic.gdx.utils.GdxRuntimeException:找不到文件:spritesheet.atlas(内部) 在com.badlogic.gdx.files.FileHandle.read(FileHandle.java:136) 在com.badlogic.gdx.graphics.g2d.TextureAtlas $ TextureAtlasData。(TextureAtlas.java:103) 在com.badlogic.gdx.graphics.g2d.TextureAtlas。(TextureAtlas.java:231) 在com.badlogic.gdx.graphics.g2d.TextureAtlas。(TextureAtlas.java:226) 在com.badlogic.gdx.graphics.g2d.TextureAtlas。(TextureAtlas.java:216) 在com.mygdx.game.MyGdxGame.create(MyGdxGame.java:23) 在com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:149) 在com.badlogic.gdx.backends.lwjgl.LwjglApplication $ 1.run(LwjglApplication.java:126)
我尝试了一些技巧,例如Project> Clean,刷新,关闭并重新打开Eclipse,甚至重新创建了一个项目。有什么想法吗?
答案 0 :(得分:0)
也许您尚未链接资产文件夹,
尝试右键单击my-gdx-game-desktop,在属性对话框中选择Java Build Path,单击链接源按钮,然后导航到资产文件夹。
如果已经设置,请尝试执行此步骤,并在需要时重新启动Eclipse
答案 1 :(得分:0)
好的,我找到了窍门。对于遇到相同问题(可以在Eclipse上运行,但无论IDE是什么都一样)的人,stack overflow already existing上有一个线程可以提供其他解决方案。 对我来说,我必须设置“工作目录” (例如用于台式机主目录)。为此,请运行 Run> Run configuration> Arguments ,在工作目录部分中有Default和Other。勾选 Other's box (我的盒子),我不得不写 $ {workspace_loc:my-gdx-game-core / assets} ,但我认为它的工作原理类似于 $ {workspace_loc: [您的核心目录名称] /资产} 。希望能有所帮助。