如何处理表中的Click输出

时间:2017-08-26 16:21:18

标签: libgdx clicklistener

我有一个表并添加了所有按钮,下面是按钮代码,重复制作level0 - 9按钮。当我单击按钮时,它会将其编号保存到首选项(首选项)并转到下一个屏幕,但所有按钮也将最后一个数字(10)保存到首选项(首选项)中。我该如何改进呢?

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

1 个答案:

答案 0 :(得分:0)

具有name数据成员的Actor类,可用于标识。您可以根据自己的要求使用它。

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();