0

我是计算机编程的新手,我正在关注 Android 游戏开发。我正在使用 Java 教程 Android 游戏开发 - 第 3 部分:处理输入,在前五分钟他让你将 png 文件放入“Tutorial-android”目录中的 assets/data 文件夹中。我照做了,跟着他。他成功加载了马里奥的图片,我不能。我复制了他的确切代码,

package com.me.tutorial;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Vector2;

public class Tutorial implements ApplicationListener {
;
SpriteBatch batch;
Texture mario;

Vector2 position;
@Override
public void create() {      
batch = new SpriteBatch();
mario = new Texture(Gdx.files.internal("mario.png"));


position = new Vector2(50,50);
}

@Override
public void dispose() {
}

@Override
public void render() {      
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);


batch.begin();
batch.draw(mario, position.x, position.y);
batch.end();
}

我收到了这些错误

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException:           Couldn't load file: mario.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:104)
at com.me.tutorial.Tutorial.create(Tutorial.java:19)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:137)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:115)    

原因:com.badlogic.gdx.utils.GdxRuntimeException:找不到文件:com.badlogic.gdx.files.FileHandle.read(FileHandle.java:134) 的 mario.png (Internal) at com.badlogic.gdx.files .FileHandle.readBytes(FileHandle.java:218) 在 com.badlogic.gdx.graphics.Pixmap。(Pixmap.java:137) ... 还有 8 个

我看了看,我找不到解决这个问题的方法。请帮助我,谢谢。

4

3 回答 3

2

如果它在asset/data文件夹中,您需要将加载行更改为:

mario=new Texture(Gdx.files.internal("data/mario.png");

内部查看asset文件夹而不是asset/data文件夹。

于 2014-02-18T09:56:15.663 回答
0

查看Gdx.files.internal("path")jar 中的源文件夹。在 Android 上,这个源文件夹就像 @BennX 所说的asset文件夹,据我所知,它必须是那个文件夹。在桌面上,您可以拥有自己的文件夹,但您需要在 Eclipse 中将其标记为源文件夹。因此,如果您的 Projectstructure 是这样的:asset/textures/mario.png 您必须调用Gdx.files.internal("textures/mario.png");.

于 2014-02-18T10:53:20.343 回答
0

谢谢你的回答。我做了Gdx.files.internal("data/mario")并运行了它,马里奥的照片像以前一样出现了,但是当我添加时

@Override
  public void render() {        
    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

    if(Gdx.input.isKeyPressed(Keys.W));{
        position.y += 1f;
    }
    if(Gdx.input.isKeyPressed(Keys.A));{
        position.x -= 1f;

    }
    if(Gdx.input.isKeyPressed(Keys.S));{
        position.y -= 1f;

    }
    if(Gdx.input.isKeyPressed(Keys.D));{
        position.x += 1f;
    }


batch.begin();
batch.draw(mario, position.x, position.y);
batch.end();
}

` 当我加载它时,“输入”不起作用。它加载图片。但是当我按 W、A、S、D 时它不会移动图像。就像 theLazyTryhard 在他的视频中所做的那样。

于 2014-02-19T23:38:09.813 回答