2017-08-26 18 views
0

我有一個表格並添加所有按鈕,下面是按鈕代碼,它是重複製作level0-9按鈕。當我點擊該按鈕時,它將把它們的號碼保存到首選項(首選項)並進入下一個屏幕,但所有按鈕也將最後一個號碼(10)保存到首選項(首選項)中。我該如何改進它?如何處理表格中的Click輸出

for (level = 0; level < 10;level++) { 
    levelbutton[level].getLabel().setFontScale(1 * witdh/540, 1 * height/960); 
    levelbutton[level].addListener(new ClickListener() { 
     public void clicked(InputEvent event, float x, float y) { 
      prefs.putInteger("Level",level); 
      prefs.flush(); 
      ((Game) Gdx.app.getApplicationListener()).setScreen(basicGame); 
     } 
    }); 
     leveltable.add(levelbutton[level]).width(170*witdh/540).height(80*height/960); 
     leveltable.row(); 
    } 
+2

請不要在您的答案中編輯*「Solved」*之類的內容。相反,請點擊旁邊的複選標記,接受您認爲最有用的答案。這將正確地將問題標記爲在系統級別解決。 –

回答

0

演員類有一個name數據成員,可用於識別。您可以將其用於您的要求。

for (level = 0; level < 10;level++) { 

    levelbutton[level].getLabel().setFontScale(1 * witdh/540, 1 * height/960); 
    levelbutton[level].setName(String.valueOf(level)); 
    levelbutton[level].addListener(new ClickListener() { 
     public void clicked(InputEvent event, float x, float y) { 
      Actor target = event.getTarget(); 
      String targetName = target.getName(); 
      if(targetName !=null) { 

       int levelNum=Integer.parseInt(targetName); 
       prefs.putInteger("Level",levelNum); 
       prefs.flush(); 
       ((Game) Gdx.app.getApplicationListener()).setScreen(basicGame); 
      } 
     } 
    }); 
    leveltable.add(levelbutton[level]).width(170*witdh/540).height(80*height/960); 
    leveltable.row(); 
} 

編輯

getListenerActor()是更好的選擇,那回報連接監聽器的演員。

target = event.getListenerActor(); 
+0

謝謝你的回答。我將其更改爲 target = event.getListenerActor(); 它對我的情況更穩定。感謝您的點擊。 –