java - LibGDX 按钮在触摸时没有响应

标签 java android-studio libgdx

我的第一个问题是文本字段没有显示,第二个问题是按钮没有响应。我的想法是,当触摸图像“vault1”时,文本字段应显示 5。

这是我想出来的,我不知道我做错了什么。

(我只剪掉了必要的代码)

public void render(float delta) {

    drawSprite("vault1", 600, 450);
}

public void show() {

    Gdx.input.setInputProcessor(stage);
    skin = new Skin(Gdx.files.internal("ui/menuSkin.json"), new TextureAtlas("ui/atlas.pack"));

    vaultInput = new TextField("", skin);
    vaultInput.setPosition(300, 250);
    vaultInput.setSize(300, 40);
    vaultInput.setText(text2);
    vault1Button = new Image(vault1);

    vault1Button.addListener(new ClickListener() {
        public boolean touchDown(InputEvent e, float x, float y, int point, int button) {
            System.out.println("133");
           vaultInput.setText(score);
            return false;
        }});
}

private void drawSprite(String name, float x, float y) {
    Sprite sprite = textureAtlas.createSprite(name);

    sprite.setPosition(x, y);

    sprite.draw(batch);
    vault1 = sprite;
}

最佳答案

很难判断您何时遗漏了代码,但您正在将阶段添加到输入处理器:

 Gdx.input.setInputProcessor(stage);

舞台和添加到舞台的 Actor 现在是唯一响应输入的东西。但是您永远不会向舞台添加任何内容,也不会绘制舞台,而是在 drawSprite 方法中单独绘制 Sprite 。

如果您将按钮添加到舞台,您所需要做的就是调用 stage.draw():

public void render(float delta) {
    stage.draw();
    stage.act(delta);
}

public void show() {
   Gdx.input.setInputProcessor(stage);
       skin = new Skin(Gdx.files.internal("ui/menuSkin.json"), new TextureAtlas("ui/atlas.pack"));


    vaultInput = new TextField("", skin);
    vaultInput.setPosition(300, 250);
    vaultInput.setSize(300, 40);
    vaultInput.setText(text2);
    vault1Button = new Image(vault1);


    vault1Button = new Image(vault1);



    vault1Button.addListener(new ClickListener() {
    public boolean touchDown(InputEvent e, float x, float y, int point, int button) {
            System.out.println("133");
           vaultInput.setText(score);
            return false;
    }});
    vaultInput.setPosition(x1, y1);
    vault1Button.setPosition(x2, y2);
    stage.addActor(vaultInput);
    stage.addActor(vault1Button);
}

调用 stage.draw() 时,将绘制添加到舞台的所有内容

关于java - LibGDX 按钮在触摸时没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48444670/

相关文章:

java - Kafka无序消息场景处理

java - JRE-9 deprecate browser plug-in - web start (JNLP) 可以直接在 JRE-9 中运行吗?

java - 在 IntelliJ IDEA 中调试时无法使用 lambda 作为断点条件

android - 在 Android Xamarin 中的 Activity 开始时更改可绘制的切换按钮

java - 如何创建 libgdx 主菜单屏幕

java - 运行程序时如何重置 TestNG 中测试方法组的值

android - 如何在 android studio 中包含 android-bootstrap?

java - 构建 android 应用程序时出错 : java. util.zip.ZipException : duplicate entry: com/sun/mail/handlers/message_rfc822. 类

java - libGDX 中的视频播放

java - 在鼠标位置绘制矩形和形状渲染矩形