gpt4 book ai didi

java - 使用 "this.create()"和 "this.render()"时 LibGDX 中出现堆栈溢出错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:21:52 25 4
gpt4 key购买 nike

我正在按照在线教程使用 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();
}
}

当我在没有函数的情况下运行代码时,它运行得非常好,并且图像使用箭头键在屏幕上移动。但是当我重新添加这两个函数时,我收到此错误:

Exception in thread "LWJGL Application"com.badlogic.gdx.utils.GdxRuntimeException: java.lang.StackOverflowError at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:13>3) Caused by: java.lang.StackOverflowError at com.mygdx.spacegame.MainGameClass.create(MainGameClass.java:20) at com.mygdx.spacegame.MainGameClass.create(MainGameClass.java:20) at com.mygdx.spacegame.MainGameClass.create(MainGameClass.java:20) at com.mygdx.spacegame.MainGameClass.create(MainGameClass.java:20) at com.mygdx.spacegame.MainGameClass.create(MainGameClass.java:20) at com.mygdx.spacegame.MainGameClass.create(MainGameClass.java:20) at com.mygdx.spacegame.MainGameClass.create(MainGameClass.java:20) at com.mygdx.spacegame.MainGameClass.create(MainGameClass.java:20) at com.mygdx.spacegame.MainGameClass.create(MainGameClass.java:20)

我已经有一段时间没有使用 Java 了,而且我对 LibGDX 完全陌生,所以我什至不知道从哪里开始,而且我在网上找不到任何相关的解决方案。希望这里有人知道问题是什么。

最佳答案

create 方法调用本身,这将创建无限的 create 调用。

没有任何停止标志就无法完成此操作。只需删除 this.create();

public void create () {
this.create();

关于java - 使用 "this.create()"和 "this.render()"时 LibGDX 中出现堆栈溢出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44818465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com