java 使用 "this.create()" 和 "this.render()" 时 LibGDX 中的错误



我正在遵循在线教程,使用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.
    ....
}

最新更新