Der Versuch, ein einfaches Tippspiel zu machen. Ich habe eine Tastatur erstellt, die aus LibGDX scene2d TextButtons besteht und diese in 3 scene2d-Tabellen (für jede Reihe von Schlüsseln) einfügt und sie in eine andere Tabelle einfügt. Hier ist der Code so weit:LibGDX primitive Tastatur mit einem Listener für jeden Schlüssel
Gdx.input.setInputProcessor(stage);
Table keyboard = new Table();
Table keysTop = new Table();
Table keysMid = new Table();
Table keysBot = new Table();
final char ascii[] = {'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P',
'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L',
'Z', 'X', 'C', 'V', 'B', 'N', 'M'};
// create all keys in order of the ascii[] table above
for (int index = 0; index < ascii.length; index++) {
keys[index] = new TextButton("", skin);
String letter = Character.toString(ascii[index]);
keys[index].setText(letter);
keys[index].setSkin(skin);
// and put them in correct rows
if (index < 10)
keysTop.add(keys[index]).width(keySize).height(keySize + 5).pad(2);
else if (index < 19)
keysMid.add(keys[index]).width(keySize).height(keySize + 5).pad(2);
else
keysBot.add(keys[index]).width(keySize).height(keySize + 5).pad(2);
}
// add each row of keys to the keyboard Table
keyboard.add(keysTop).pad(5).expandX().fill().row();
keyboard.add(keysMid).pad(5).expandX().fill().row();
keyboard.add(keysBot).pad(5).expandX().fill().row();
stage.addActor(keyboard);
Nun möchte Ich mag Zuhörer zu jedem Schlüssel hinzuzufügen, vorzugsweise in einer Schleife. Setzen Sie den folgenden Code am Ende der for-Schleife:
keys[index].addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
System.out.println(letter);
}
});
wegen Fehler nicht kompilieren „Variable‚Brief‘von innen inneren Klasse zugegriffen wird, muss, final deklariert werden“. Was ist die bevorzugte (oder einfachste, wenn es für Anfänger schwer zu implementieren ist) Lösung hier?
Die Variable als final deklarieren funktioniert. Früher nahm ich an, dass es nicht als endgültig festgelegt werden konnte, da sich die endgültigen Variablen nicht ändern sollten. Habe ich richtig gedacht, dass es in dieser Situation funktioniert, weil ich diese Variable mit jedem Durchlauf der for-Schleife neu deklariere? – elesmod