我是新来的计算机编程,我正在关注Android游戏开发。我正在使用Java教程Android游戏开发 - 第3部分:处理输入,并且在第一个五分钟内,他将png文件放入“Tutorial-android”目录中的assets/data文件夹中。我这样做了,然后跟着他。他成功地装载了马里奥的照片,我不能。我抄他的确切代码,使用Eclipse和libgdx,它不能'找到'和'加载'我的PNG图像
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:未找到文件:mario.png(内部) at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:134) at com.badlogic.gdx.files.FileHandle.readBytes(FileHandle.java:218) at com.badlogic.gdx.graphics .Pixmap。 (Pixmap.java:137) ... 8更多
我看了,我找不到解决方法。请帮助我,谢谢。
当我添加@覆盖 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时它不会移动图像。 – Noob2Coding
我会实现InputProcessor接口,然后将您的类设置为输入处理器:Gdx.input.setInputProcessor(this)。然后你应该重写keyDown和keyUp方法(因为它是一个你必须实现的接口,但是你需要完成这两个接口)。存储一个'int dir':如果你没有按下键,-1表示“W”,2表示“W + A”......在keyDown中,你将按键添加到你的int中,在keyUp中删除它。在render()中你说if(dir == 1)pos.x + = speed * delta; else if(dir == 2){pos.x + = speed/2 * delta; pos.y + =速度/ 2 *增量;}。这应该工作。但这只是伪代码。 – Springrbua