java - LIBGDX And​​roid - 按钮监听器不工作

标签 java android libgdx

我一直在尝试在我的游戏中添加一个按钮,但即使在我查找了所有解决方案之后,似乎也没有任何效果。 该按钮呈现良好,但当我触摸它时它没有任何反应。

我一直在使用 InputMultiplexer 在舞台上设置一个输入处理器,并将按钮作为 Actor 添加到它上面。

感谢任何帮助。

this.stage = new Stage();

...

this.buttonReplay = new TextButton("Replay", buttonStyle);
    this.buttonReplay.setX(width / 2 - this.buttonReplay.getPrefWidth() / 2);
    this.buttonReplay.setY(height / 2 - this.buttonReplay.getPrefHeight() / 2);

this.stage.addActor(buttonReplay);

(不同类别)

        multiplexer.addProcessor(menuDeath.getStage()); // Adds death menu to input processor

        Gdx.app.log("adddad", "added");

        menuDeath.getButtonReplay().addListener(new InputListener()
        {
            @Override
            public boolean touchDown (InputEvent event, float x, float y, int pointer, int button)
            {
                Gdx.app.log("dsad", "daDSAda");
                return true;
            }
            @Override
            public void touchUp (InputEvent event, float x, float y, int pointer, int button)
            {
                Gdx.app.log("dsad", "daDSAda");
            }
        });

运行时,“added”记录在控制台中,这应该意味着 stage 有一个输入处理器,但是,按钮似乎根本不起作用,我什至尝试使用不同的监听器,例如 ClickListenerChangeListener

最佳答案

多路复用器可以先将输入事件发送给另一个监听器,该监听器通过返回 true 来消耗输入事件。

您可以首先尝试摆脱多路复用器,只是通过替换来确保您的代码工作正常

multiplexer.addProcessor(menuDeath.getStage());

Gdx.input.setInputProcessor(menuDeath.getStage());

这样你的 menuDeath 阶段是唯一的监听器,因此应该正确处理 touchDown 事件。

关于java - LIBGDX And​​roid - 按钮监听器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29308673/

相关文章:

java - 并发多线程批量向Mysql插入/更新数据

加载数据时android webview闪烁一次

java - 如何调整 libGDX 中的文本大小

java - 从文本字段字符串到整数

java - 数据绑定(bind)和 Google 服务插件无法协同工作

java - Freemarker 模型将时间戳以毫秒为单位转换为日期

android - 在 Webview 上处理 HTML onClick 函数。 shouldOverrideUrlLoading() 未调用

android - 记录事件 (FE) : app_exception(_ae), Bundle[{firebase_event_origin(_o)=crash

Android.app.Application 无法转换为 GoogleAnalyticsApp (libgdx)

java - 如何制作可调整大小的 JDialog?