2017-08-26 39 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(); 它对我的情况更稳定。感谢您的点击。 –