有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Libgdx管理单个Clicklistener的问题

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

  1. # 1 楼答案

    您可以在类中保存传递给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]);
    }