Создание текстового поля в LibGDX

Я работаю над игрой для Android с использованием LibGDX и пытаюсь создать TextField для ввода имени игрока. Вот что у меня есть до сих пор:

TextField.TextFieldStyle style = new TextField.TextFieldStyle();
    style.font = new BitmapFont();
    style.fontColor = Color.CHARTREUSE;

    TextField field = new TextField("", style);
    field.setText("Test");
    field.setWidth(150);

Затем я создал таблицу и добавил в нее TextField.

table.add(field).expandX().padTop(10);

    stage.addActor(table);

    Gdx.input.setInputProcessor(stage);

И это то, что находится в моем методе рендеринга:

 Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

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

Единственное, что появляется, это «Тест», под которым ничего нет. Таким образом, TextField создается, но не может принимать никаких входных данных. В прошлом у меня были проблемы со скинами, и я не хотел их использовать, если в этом не было необходимости. Но я не знаю, является ли это причиной того, что у меня нет скинов, или это какая-то другая проблема. Может кто-нибудь объяснить мне, как вводить данные в TextField или в чем моя проблема?


person A.J. Kolbasowski    schedule 26.04.2018    source источник
comment
Вы включили отладку рендеринга в своей таблице (и дочерних элементах), чтобы увидеть, соответствует ли ограничивающая рамка текстового поля ожидаемому?   -  person Thomas    schedule 26.04.2018
comment
Я попробовал ваш код, и он действительно печатает только «Текст», однако можно было щелкнуть этот текст и изменить его с помощью клавиатуры, поэтому ваша оценка того, что стиль является виновником, кажется правильной.   -  person DHa    schedule 26.04.2018


Ответы (1)


У меня также было довольно много проблем с вводом текста от пользователей. Я не нашел способа использовать TextView. Если вы хотите получить ввод от пользователя при использовании LibGDX, вот простой способ сделать это:

Используйте TextInputListener. Вы можете прочитать руководство на этой странице. Выглядит не очень красиво, но со своей задачей справляется.

Если вы хотите иметь индивидуальный дизайн, вам не следует использовать описанный выше метод. Если вы хотите ввести данные от пользователя, проверьте, нажата ли клавиша (каждый кадр). Если это так, добавьте введенный символ к String. Визуализируйте String в красивом диалоговом окне, используя BitmapFont.

person TVASO    schedule 16.05.2018