gpt4 book ai didi

java - 如何清除 libgdx 监听器

转载 作者:行者123 更新时间:2023-12-01 13:25:40 25 4
gpt4 key购买 nike

所以在菜单中我有 3 个按钮,并且所有按钮都具有相同的代码。对于这个主题来说,唯一重要的是

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 

然后弹出异常:

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)

编辑:如果我不删除监听器,它们仍然处于 Activity 状态并且可以点击,afc 有异常(exception)。

最佳答案

看起来您正在 actor.touchdown 监听器中调用 MainMenu.disposeMainMenu.dispose 清除按钮上的所有监听器。 LIBGX 不允许这样做。

为什么?因为 LIBGDX 正在对很多 actor 调用触摸事件。您确实不希望您的游戏根据添加到舞台的按钮顺序而有所不同。

所以,在其他地方调用清晰的监听器。

由于您无论如何都是在 dispose 方法中执行此操作,因此我建议您根本不要删除按钮监听器,因为您已注册监听器的参与者不应再次使用。

关于java - 如何清除 libgdx 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21819397/

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