如何在主窗口的随机位置显示libgdx中的许多文本输入字段?

时间:2017-04-14 11:41:56

标签: java libgdx

我想用libgdx显示许多文本输入字段(例如 名称,姓氏,电子邮件)用户必须输入这些信息。 我已经尝试过这个https://github.com/libgdx/libgdx/wiki/Simple-text-input,但在我的情况下它不是最佳选择,因为我希望它包含在主窗口中,而不是打开一个新的小的,因为它只显示一个文本输入字段。 此外,我希望能够使这些字段出现在主窗口的随机位置。

1 个答案:

答案 0 :(得分:0)

您可以根据需要使用scene2d小部件,创建标签和TextField并添加到舞台。您可以使用表格来安排演员。

public class Splash extends Game  {

    private Stage stage;

    @Override
    public void create() {

        ExtendViewport extendViewport=new ExtendViewport(700,1200,new OrthographicCamera());
        stage=new Stage(extendViewport);

        Skin skin=new Skin(Gdx.files.internal("skin/uiskin.json"));
        skin.get("font-label", BitmapFont.class).getRegion().getTexture().setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);

        Table table=new Table();
        table.defaults().pad(10);
        table.setFillParent(true);

        Label userName=new Label("USER ID : ",skin);
        TextField userNameField=new TextField("",skin);

        Label name =new Label("NAME : ",skin);
        TextField nameField=new TextField("",skin);

        Label email=new Label("EMAIL : ",skin);
        TextField emailField=new TextField("",skin);

        table.add(userName);
        table.add(userNameField).width(300);
        table.row();
        table.add(name).left();
        table.add(nameField).width(300);
        table.row();
        table.add(email).left();
        table.add(emailField).width(300);

        stage.addActor(table);
        Gdx.input.setInputProcessor(stage);
    }

    @Override
    public void render() {
        super.render();

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

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

    @Override
    public void resize(int width, int height) {
        super.resize(width,height);
        stage.getViewport().update(width,height);
    }

    @Override
    public void dispose() {
       stage.dispose();
    }

输出看起来:

enter image description here