Java 使用LibGDX.scene2d中的输入检查错误的条件
我正在用LibGDX.scene2d.ui为我的游戏构建一个GUI,当我试图处理输入时遇到了一个问题。我有下面的代码,当按下按钮但它不工作时,会发生一些事情:Java 使用LibGDX.scene2d中的输入检查错误的条件,java,if-statement,libgdx,conditional-statements,scene2d,Java,If Statement,Libgdx,Conditional Statements,Scene2d,我正在用LibGDX.scene2d.ui为我的游戏构建一个GUI,当我试图处理输入时遇到了一个问题。我有下面的代码,当按下按钮但它不工作时,会发生一些事情: enterButton.addListener(new InputListener() { @Override public boolean touchDown(InputEvent e, float x, float y, int p, int b) { Gdx.app.log("
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");
}
});
可能有什么问题?您可以尝试使用ClickListener来检查触摸是否在范围内,例如:
enterButton.addListener(new ClickListener() {
@Override
public void touchDown(InputEvent event, float x, float y, int pointer, int button) {
return true;
}
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
if (isOver()) {
if(validate(loginField.getText(), passField.getText())) {
openMenu();
}
}
}
});
您还可以尝试在Actor上设置debug标志,以便使用
enterButton.debug()查看单击边界的实际位置代码>这里有什么问题,您想得到什么?你能解释一下吗?只需使用ChangeListener并重写已更改的方法来对按钮按下做出反应。
touched: down
touched: up
untouched: up
enterButton.addListener(new ClickListener() {
@Override
public void touchDown(InputEvent event, float x, float y, int pointer, int button) {
return true;
}
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
if (isOver()) {
if(validate(loginField.getText(), passField.getText())) {
openMenu();
}
}
}
});