2016-02-21 19 views
3

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

但它似乎完全刪除按鈕單擊的任何功能。

回答

3

您可以持有您在課堂中傳遞給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]); 
}