Input Libgdx:Dialog不';不要听输入
我的目标是向用户显示一个对话框,以便用户能够选择要添加到舞台上的演员。我在实现Screen和GestureListener的应用程序的主屏幕中执行此操作。(我需要手势监听器来听双击)。我在重写的touchtown()方法中创建对话框。 当对话框出现时,它不工作。如果我点击屏幕上的任何一点,屏幕将持续收听着陆时的输入 代码如下:Input Libgdx:Dialog不';不要听输入,input,dialog,libgdx,Input,Dialog,Libgdx,我的目标是向用户显示一个对话框,以便用户能够选择要添加到舞台上的演员。我在实现Screen和GestureListener的应用程序的主屏幕中执行此操作。(我需要手势监听器来听双击)。我在重写的touchtown()方法中创建对话框。 当对话框出现时,它不工作。如果我点击屏幕上的任何一点,屏幕将持续收听着陆时的输入 代码如下: public class SquareDefense implements Screen, GestureListener { .... @Overrid
public class SquareDefense implements Screen, GestureListener {
....
@Override
public boolean touchDown(float x, float y, int pointer, int button) {
System.out.println("touchDown");
if(squareDefenseTable.getActor(x, y) != null) {
// rotate the clicked actor!
squareDefenseTable.rotateActor(x, y);
}
else {
showDialog();
}
return true;
}
private void showDialog() {
Dialog dialog = new Dialog("Choose an action", skin) {
@Override
protected void result(Object object) {
boolean exit = (Boolean) object;
if (exit) {
Gdx.app.exit();
} else {
remove();
}
}
@Override
public Dialog show(Stage stage) {
return super.show(stage);
}
@Override
public void cancel() {
super.cancel();
}
@Override
public float getPrefHeight() {
return 50f;
}
};
dialog.button("Yes", true);
dialog.button("No", false);
dialog.key(Input.Keys.ENTER, true);
dialog.key(Input.Keys.ESCAPE, false);
dialog.show(stage);
}
}
我认为您没有添加这行代码:
Gdx.input.setInputProcessor(stage);
告诉我这是否有效我认为您没有添加这行代码:
Gdx.input.setInputProcessor(stage);
告诉我在show()方法中这是否有效,我有Gdx.input.setInputProcessor(新的GestureDetector(this));通过这一行,您可以删除作为输入处理器的阶段。若要将两者相加,您需要一个输入多路复用器。谢谢。现在它可以工作了,即使当我在对话框中选择一个动作,并在舞台上添加一个演员时,舞台的背景也消失了。很好,它现在可以工作了:),请把你的解决方案的细节放在这里,这样其他人就可以从中受益,别忘了给答案打分,好运气我有Gdx.input.setInputProcessor(新的GestureDetector)的show()方法(此));通过这一行,您删除了作为输入处理器的阶段。若要添加这两个,您需要一个输入多路复用器。谢谢。现在它可以工作了,即使我在对话框上选择了一个动作,并向阶段添加了一个演员,阶段的背景也消失了,很好,它现在可以工作了:),请将您的解决方案的细节放在这里,以便其他人可以从中受益,别忘了给答案打分,好lucki想知道你的问题是否解决了,如果是,请选择正确的答案来解决你的问题,谢谢我想知道你的问题是否解决了,如果是,请选择正确的答案来解决你的问题,谢谢