所以在菜單中我有3個按鈕,所有的代碼都是相同的。對於主題唯一重要的事情是如何清除libgdx監聽器
button2.addListener(new InputListener() {
@Override
public boolean touchDown(InputEvent event, float x, float y,
int pointer, int button) {
game.setGame();
dispose();
return true;
}
});
那麼一切都是細下去,直到:
button3.clearListeners(); // MainMenu.java:174 line in exeption
然後exeption彈出:
Exception in thread "LWJGL Application" java.lang.IllegalStateException: Invalid between begin/end.
at com.badlogic.gdx.utils.DelayedRemovalArray.clear(DelayedRemovalArray.java:125)
at com.badlogic.gdx.scenes.scene2d.Actor.clearListeners(Actor.java:261)
at com.racostyle.avdelux.MainMenu.dispose(MainMenu.java:174)
at com.racostyle.avdelux.MainMenu$3.touchDown(MainMenu.java:123)
at com.badlogic.gdx.scenes.scene2d.InputListener.handle(InputListener.java:55)
at com.badlogic.gdx.scenes.scene2d.Actor.notify(Actor.java:165)
at com.badlogic.gdx.scenes.scene2d.Actor.fire(Actor.java:136)
at com.badlogic.gdx.scenes.scene2d.Stage.touchDown(Stage.java:277)
at com.badlogic.gdx.backends.lwjgl.LwjglInput.processEvents(LwjglInput.java:300)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:200)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
編輯:如果我不刪除監聽器它們仍然是活躍的,可以點擊,並且可以免除。
問題是如果聽衆保持他們仍然活躍。所以當下一個屏幕加載時,它們可以點擊 – raco
這隻有當你的演員在屏幕之間共享時纔會發生。我建議不要在屏幕之間分享演員。如果您必須在屏幕之間共享演員,請在您首次開始顯示新屏幕時嘗試清除所有演員的聽衆。 –
它不應該被共享。每個屏幕都有自己的「對象」。另外我剛剛嘗試刪除監聽器時創建新屏幕,但仍然存在相同的問題。 – raco