我正在关注一个在线教程,该教程使用LibGDX和IntelliJ IDEA制作太空射击游戏。一切正常,直到我添加了“ this.create()”和“ this.render()”函数。当添加它们时,它会导致堆栈溢出错误,我不知道如何解决它。
package com.mygdx.spacegame;
import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
public class MainGameClass extends Game {
public static final float SPEED = 120;
public SpriteBatch batch;
Texture img;
float x;
float y;
@Override
public void create () {
this.create();
batch = new SpriteBatch();
img = new Texture("badlogic.jpg");
}
@Override
public void render () {
this.render();
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
if (Gdx.input.isKeyPressed(Keys.UP)){
y += SPEED * Gdx.graphics.getDeltaTime();
}
if (Gdx.input.isKeyPressed(Keys.DOWN)){
y -= SPEED * Gdx.graphics.getDeltaTime();
}
if (Gdx.input.isKeyPressed(Keys.RIGHT)){
x += SPEED * Gdx.graphics.getDeltaTime();
}
if (Gdx.input.isKeyPressed(Keys.LEFT)){
x -= SPEED * Gdx.graphics.getDeltaTime();
}
batch.begin();
batch.draw(img, x, y);
batch.end();
}
@Override
public void dispose () {
batch.dispose();
img.dispose();
}
}
当我运行不带功能的代码时,它运行得非常好,并且图像使用箭头键在屏幕上移动。但是当我重新添加两个函数时,出现此错误:
线程“ LWJGL应用程序”中的异常com.badlogic.gdx.utils.GdxRuntimeException:java.lang.StackOverflowError
在com.badlogic.gdx.backends.lwjgl.LwjglApplication $ 1.run(LwjglApplication.java:13> 3)
造成原因:java.lang.StackOverflowError
在com.mygdx.spacegame.MainGameClass.create(MainGameClass.java:20)
在com.mygdx.spacegame.MainGameClass.create(MainGameClass.java:20)
在com.mygdx.spacegame.MainGameClass.create(MainGameClass.java:20)
在com.mygdx.spacegame.MainGameClass.create(MainGameClass.java:20)
在com.mygdx.spacegame.MainGameClass.create(MainGameClass.java:20)
在com.mygdx.spacegame.MainGameClass.create(MainGameClass.java:20)
在com.mygdx.spacegame.MainGameClass.create(MainGameClass.java:20)
在com.mygdx.spacegame.MainGameClass.create(MainGameClass.java:20)
在com.mygdx.spacegame.MainGameClass.create(MainGameClass.java:20)
自从我使用Java以来已经有一段时间了,而且我对LibGDX完全陌生,所以我什至不知道从哪里开始,而且我也找不到在线任何相关的解决方案。希望这里有人可能知道问题所在。
最佳答案
create方法调用本身会创建无休止的调用。
没有任何停止标志就无法完成。只需删除this.create();
public void create () {
this.create();