如何处理表格中的Click输出
问题描述:
我有一个表格并添加所有按钮,下面是按钮代码,它是重复制作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();
}
答
演员类有一个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(); 它对我的情况更稳定。感谢您的点击。 –
请不要在您的答案中编辑*“Solved”*之类的内容。相反,请点击旁边的复选标记,接受您认为最有用的答案。这将正确地将问题标记为在系统级别解决。 –