如何在 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);
}
}
如何在 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);
}
}