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

但似乎完全删除了按钮单击的所有功能。

最佳答案

您可以保存传递给类中的setExamine方法的“cl”引用。然后,您可以先在setExamine方法中删除此特定的侦听器。我假设检查是一个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]);
}

07-24 20:56