gpt4 book ai didi

java - 将 TextField 与 LibGDX 一起使用

转载 作者:行者123 更新时间:2023-11-29 19:11:53 25 4
gpt4 key购买 nike

我正在使用 LibGDX 开发一款 Android 游戏,我想实现两个 TextField 来登录服务器。

据我所知,我需要使用 Stage添加一个 TextField 作为 Actor像这样:

this.stage = new Stage();
TextField txtf = new TextField("", mSkin);
//...
stage.addActor(txtf);
// And then set the stage as InputProcessor
Gdx.input.setInputProcessor(this.stage);

但我已经有一个自定义的 InputHandler,它实现了 InputProcessor。我真的不知道如何使用我的 InputHandler 处理 TextField

我在 InputHandler 中创建了 TextField,如下所示:

public class InputHandler implements InputProcessor {

public InputHandler(float ratioWidth, float ratioHeight, GameWorld world) {
this.world = world;
this.player = world.getPlayer();
this.ratioWidth = ratioWidth;
this.ratioHeight = ratioHeight;

//...

this.usernameTextField = new TextField("", AssetLoader.defaultSkin);
this.usernameTextField.setPosition(24,73);
this.usernameTextField.setSize(88, 14);
this.passwordTextField = new TextField("", AssetLoader.defaultSkin);
this.passwordTextField.setPosition(24, 102);
this.passwordTextField.setSize(88, 14);

this.actors.add(this.usernameTextField);
this.actors.add(this.passwordTextField);
}

然后我的 InputHandler 中有一个方法可以为 GameRenderer 获取 TextField:

public ArrayList<Actor> getActors() { return this.actors; }

这是我的GameRenderer:

public class GameRenderer {

public GameRenderer(GameWorld world) {
this.world = world;

//...
}

//...

private void drawLogUI() {

for(Actor a : ((InputHandler) Gdx.input.getInputProcessor()).getActors()){
a.draw(batcher, 1);
}

//...
}

public void render(float delta) {

// Initialisation
Gdx.gl.glClearColor(32/255.0f, 72/255.0f, 132/255.0f, 1f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batcher.begin();
batcher.enableBlending();

//...

drawLogUI();

//...

batcher.end();
}

//...

}

TextField 正确呈现,但我无法对它们执行任何操作,键盘未显示等。有人可以解释我如何在我的项目中使用它们吗?

最佳答案

您知道您需要使用 StageTextField 来满足您的要求,您创建了 TextField 但没有添加到舞台,所以您不使用 scene2d(舞台、 Actor 、文本字段..)

您遵循的教程没有阶段,因此他正在使用 InputProcessor 来满足他的要求。

TextField usernameTextField = new TextField("", AssetLoader.defaultSkin);
usernameTextField.setPosition(24,73);
usernameTextField.setSize(88, 14);

stage.add(usernameTextField); // <-- Actor now on stage
Gdx.input.setInputProcessor(stage);

内部render()方法调用

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

关于java - 将 TextField 与 LibGDX 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45014420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com