Libgdx问题:管理单个Clicklistener

3
在Libgdx中,我正在尝试为特定按钮按下时的特定情况设置Clicklistener。
public void setExamine(final ClickListener cl) {
        examine.addListener(cl);
}

这是我从一个类中获得的代码,可以通过以下方式从另一个类中访问:

table.setExamine(new ClickListener(){...});

然而,这样做意味着每次都会添加一个新的ClickListener。

有没有办法管理单个点击监听器,而不是每次都添加一个?我已经尝试过使用

public void setExamine(final ClickListener cl) {
            examine.clearListeners();
            examine.addListener(cl);
}

但这似乎完全移除了按钮点击的任何功能。

1个回答

3

您可以在类中保留传递给setExamine方法的“cl”引用。然后,您可以首先在setExamine方法中删除此特定侦听器。我假设examine是一个scene2d演员。

private ClickListener clickListener;

public void setExamine(final ClickListener cl) {
   if(clickListener != null) {
      examine.removeListener(clickListener);
   }
   examine.addListener(cl);
   clickListener = cl;
}

如果您想使用类似clearListeners()的解决方案,应该保留按钮的默认监听器。
while(examine.getListeners().size > 1) {
   examine.removeListener(examine.getListeners()[1]);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接