【问题标题】:Cannot show user input with a textfield无法使用文本字段显示用户输入
【发布时间】:2014-12-27 00:14:42
【问题描述】:

我正在尝试使用TextField 来获取一些用户输入:

 public void render() {
    Gdx.gl.glClear(GL11.GL_COLOR_BUFFER_BIT);
    Gdx.gl.glClearColor(0, 0, 0, 0);

    batch.begin();
    batch.end();
    stage = new Stage();
    Gdx.input.setInputProcessor(stage);
    Skin skin = new Skin(Gdx.files.internal("assets/uiskin.json"));

    TextButton btnLogin = new TextButton("Click", skin);
    btnLogin.setPosition(300, 300);
    btnLogin.setSize(300, 60);
    btnLogin.addListener(new ClickListener() {
        public boolean touchDown(InputEvent e, float x, float y, int point, int button) {
            System.out.println(txfUsername.getText());
            return false;
        }
    });

    txfUsername = new TextField("", skin);
    txfUsername.setPosition(300, 250);
    txfUsername.setSize(300, 40);

    stage.addActor(txfUsername);           
    stage.addActor(btnLogin);

    stage.act();
    stage.draw();
}

我得到的只是一个空白字段。用户不能以任何方式与之交互。

我按照this video 中的说明进行操作 如何使文本字段可编辑?

【问题讨论】:

  • 是的,当文本与 TextField 关联时,它就起作用了

标签: input libgdx textfield stage


【解决方案1】:

您在 render 方法中使用 txfUsername = new TextField ("", skin);。这会在每次渲染时从头开始创建一个新的 TextField。

public void render() {
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);


    batch.begin();
    // do other rendering ...
    batch.end();

    Gdx.app.log("MyTextField", txfUsername.getText());

    stage.act(Gdx.graphics.getDeltaTime());
    stage.draw();
}

在你的类变量中:

private TextButton btnLogin;
TextField txfUsername;

在您的方法showcreate(不是render)中:

@Override
public void show() {

    btnLogin = new TextButton("Click", skin);

    btnLogin.setPosition(300, 300);
    btnLogin.setSize(300, 60);
    btnLogin.addListener(new ClickListener() {
        public boolean touchDown(InputEvent e, float x, float y, int point, int button) {
            System.out.println(txfUsername.getText());
            return false;
        }
    });

    txfUsername = new TextField("", skin);
    txfUsername.setPosition(300, 250);
    txfUsername.setSize(300, 40);

    stage.addActor(txfUsername);           
    stage.addActor(btnLogin);
}

使用为字段编写的txfUsername.getText();

编辑:我不知道你是如何使用 GL11 的,如果是 GL10,我可以理解你的故障,如果你在 GL10 中遇到错误,你应该更新 libgdx,GL10 是一个接口,我认为 libgdx 的最新版本不是已经带来了

【讨论】:

  • @Twile 欢迎来到 StackOverflow!如果这个答案解决了你的问题,请采纳。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多