如何在 Android / libgdx 中删除 ChangeListener

How to remove a ChangeListener in Android / libgdx

如何在 Libgdx / Android 中删除 Changelistener。希望能帮到你。

public void addlistenerStartscreen(final TextButton button){
    button.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeEvent event, Actor actor) {
            stage.clear();
            //Remove Listener from button
            showGame();
        }
    });
}

API 定义为 here

看起来像这样:

public boolean removeListener(EventListener listener)

(演员API)

如果不引用您的侦听器,则无法删除它。所以对你的代码最简单的修改应该是这样的:

ChangeListener myChangeListener;

button.addListener(myChangeListener = new ChangeListener() {
        @Override
        public void changed(ChangeEvent event, Actor actor) {
            stage.clear();

            //Remove Listener from button
            button.removeListener(myChangeListener);

            showGame();
        }
    });

还有另一种方法可以从任何 Actor 中删除所有侦听器,但是此代码很可能会破坏某些 actor 的本机行为(例如,Button,它使用内部点击侦听器来管理按下状态)。但无论如何我都留给你,它可能对你的自定义演员有用。

static void removeAllListeners(Actor actor) {
        Array<EventListener> listeners = new Array<>(actor.getListeners());
        for (EventListener listener : listeners) {
            actor.removeListener(listener);
        }
    }