LIBGDX And​​roid - 按钮监听器无法正常工作

时间:2015-03-27 19:24:24

标签: java android libgdx

我一直试图在我的游戏中添加一个按钮,即使在我查找了所有解决方案之后,似乎没有任何工作。 按钮渲染正常,但触摸它时什么都不做。

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

感谢任何帮助。

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");
            }
        });

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

1 个答案:

答案 0 :(得分:1)

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

您可以首先尝试摆脱多路复用器,以确保您的代码通过替换

正常工作
multiplexer.addProcessor(menuDeath.getStage());

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

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