我正在遵循在线教程,使用libgdx和Intellij Idea制作太空射击游戏。一切都很好,直到我添加" this.create(("one_answers" 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.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的新手,所以我什至不知道从哪里开始,我找不到任何相关的解决方案。希望这里有人可能知道问题是什么。
创建方法调用本身将创建无尽的调用。
没有任何停止标志就无法完成。只需删除this.create();
public void create () {
this.create();
使用super
关键字而不是this
调用父级覆盖方法。this
表示当前对象,因此您接到递归调用,然后在java.lang.StackOverflowError
@Override
public void create () {
super.create(); // not required here
...
}
@Override
public void render () {
super.render(); // this required to call Screen render() method.
....
}