Libgdx管理单个Clicklistener的问题

时间:2016-02-21 00:24:49

标签: java android libgdx listener

在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 个答案:

答案 0 :(得分:3)

您可以在类中保存传递给setExamine方法的“cl”引用。然后,您可以先在setExamine方法中删除此特定侦听器。我认为考试是一个场景演员。

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