私はLibgdxの最新バージョンを使用してメニューをコーディングしています。各画面(MainMenuScreen、OptionsMenuScreen、CreditsMenuScreen)にはいくつかのボタンがあります。各ボタンは画面を変更する必要があります。 MainMenuScreenを開いて「クレジット」を押すと、私はCreeditsMenuScreenを取得します。しかし、メインメニューに戻るために「戻るボタン」を使用すると、stackOverflowエラーが発生します。ここで.isPressed()を使用したときのLibgdx - stackOverFlow
は、コードの一部である:ここで
//In the MainMenuScreen.java:
if(creditsButton.isPressed()) {
menuManager.setScreen("credits");
}
//In the CreditsMenuScreen.java I have
if(backButton.isPressed()) {
menuManager.setScreen("main");
}
はエラーです。あなたが戻って、他の1つの画面から切り替えると、もう一つは、それ以来、それに呼ばれるupdate()
を持っていない
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: java.lang.StackOverflowError
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:133)
Caused by: java.lang.StackOverflowError
at org.lwjgl.BufferChecks.checkDirect(BufferChecks.java:138)
at org.lwjgl.opengl.GL20.glVertexAttribPointer(GL20.java:856)
at com.badlogic.gdx.backends.lwjgl.LwjglGL20.glVertexAttribPointer(LwjglGL20.java:829)
at com.badlogic.gdx.graphics.glutils.ShaderProgram.setVertexAttribute(ShaderProgram.java:657)
at com.badlogic.gdx.graphics.glutils.VertexArray.bind(VertexArray.java:115)
at com.badlogic.gdx.graphics.Mesh.bind(Mesh.java:380)
at com.badlogic.gdx.graphics.Mesh.bind(Mesh.java:371)
at com.badlogic.gdx.graphics.Mesh.render(Mesh.java:479)
at com.badlogic.gdx.graphics.Mesh.render(Mesh.java:449)
at com.badlogic.gdx.graphics.g2d.SpriteBatch.flush(SpriteBatch.java:975)
at com.badlogic.gdx.graphics.g2d.SpriteBatch.setTransformMatrix(SpriteBatch.java:1037)
at com.badlogic.gdx.scenes.scene2d.Group.resetTransform(Group.java:210)
at com.badlogic.gdx.scenes.scene2d.Group.draw(Group.java:58)
at com.badlogic.gdx.scenes.scene2d.Stage.draw(Stage.java:128)
at com.rander.GameMenu.MainMenuScreen.show(MainMenuScreen.java:86)
at com.badlogic.gdx.Game.setScreen(Game.java:61)
at com.rander.GameMenu.MenuManager.setScreen(MenuManager.java:44)
at com.rander.GameMenu.CreditsMenuScreen.show(CreditsMenuScreen.java:74)
からバックボタンと同じ位置にある別のボタンがあります:
そしてここでは、メインクラスです。ここ
はMenuManagerクラスですクレジットページ? – munyul
あなたの問題は実際に '.isPressed()'とは思えません。スタックトレースを見ると、コード内の3つの場所(CreditsMenuScreen、MenuManager、MainMenuScreen)を詳しく見てみることをお勧めします。 – munyul
いいえ、それらは同じ場所にありません。 –