Ich baue eine GUI für mein Spiel mit LibGDX.scene2d.ui und ich habe ein Problem, wenn ich versuche, Eingaben zu behandeln. Ich habe den folgenden Code, um etwas passieren, wenn die Taste gedrückt wird, aber es funktioniert nicht:Falsche Bedingungsprüfung mit Eingabe in LibGDX.scene2d
enterButton.addListener(new InputListener() {
@Override
public boolean touchDown(InputEvent e, float x, float y, int p, int b) {
Gdx.app.log("touched", "down");
return true;
}
@Override
public void touchUp(InputEvent e, float x, float y, int p, int b) {
Gdx.app.log("touched", "up");
if(x > enterButton.getX() && x < enterButton.getRight() && y > enterButton.getY() && y < enterButton.getTop()) {
Gdx.app.log("cond", "cursor on actor");
if(validate(loginField.getText(), passField.getText())) {
Gdx.app.log("cond", "validated");
openMenu();
}
}
Gdx.app.log("untouched", "up");
}
});
Aber praktisch gleichen Code richtig funktioniert:
registerButton.addListener(new InputListener() {
@Override
public boolean touchDown(InputEvent e, float x, float y, int p, int b) {
return true;
}
@Override
public void touchUp(InputEvent e, float x, float y, int p, int b) {
if(x > registerButton.getX() && x < registerButton.getRight() && y > registerButton.getY() && y < registerButton.getTop()) {
registerWindow.setVisible(true);
baseWindow.setVisible(false);
}
}
});
Nach Klick auf die ENTER-ich bin Ausgabe mit LibGDX-Protokollierung:
touched: down
touched: up
untouched: up
Was kann falsch sein?
Was ist das Problem hier, was willst du bekommen? können Sie erklären ? –
Verwenden Sie ChangeListener und überschreiben Sie die geänderte Methode, um auf das Drücken von Tasten zu reagieren. – Tenfour04