多个连续文本输入Libgdx

时间:2016-03-06 15:31:21

标签: java libgdx

在libgdx方法中,我需要连续预先形成多个简单的文本输入,如下所示:

Gdx.input.getTextInput(input, "Insert Object Type Here", "block", "");
addInputs[0] = input.lastInput();
Gdx.input.getTextInput(input, "Insert x here", "", "");
addInputs[1] = input.lastInput();
Gdx.input.getTextInput(input, "Insert y here", "", "");
addInputs[2] = input.lastInput();

问题是,下一个getTextInput在我有时间完成第一个之前激活,最后是多个文本框堆叠在一起,并防止任何输入被添加到数组中。我需要一种完全停止代码的方法,然后在文本输入框上按“OK”后再次启动它。

1 个答案:

答案 0 :(得分:1)

来自wiki

  

当用户输入文本字符串时,将调用input()方法。

因此,您可以将连续调用放在input方法中。例如,像这样:

private int inputCalls;
private String[] promptMessages = new String[] {"Insert Object Type Here", "Insert x here", "Insert y here"};

@Override
public void show() {
    // ...
    // First input call
    Gdx.input.getTextInput(new MyTextInputListener(), promptMessages[inputCalls = 0], "block", "");
}

public class MyTextInputListener implements TextInputListener {
   @Override
   public void input (String text) {
       // Keep input value
       addInputs[inputCalls++] = text;
       if (inputCalls < promptMessages.length) {
           // show the subsequent input
           Gdx.input.getTextInput(this, promptMessages[inputCalls], "", "");
       }
   }

   @Override
   public void canceled () {
       Gdx.app.log("Input", "Input canceled");
   }
}

请注意我没有运行此代码,但我希望我提出的解决方案的想法很明确。