LibGdx新屏幕对旧屏幕的触摸作出反应

时间:2014-10-09 22:29:47

标签: java button libgdx listener

我正在制作一个LibGdx游戏。我有一个主菜单,带有一个按钮,可以将用户发送到播放屏幕。但是,当处于播放屏幕时,游戏会像用户点击按钮位于上一屏幕的位置时那样做出反应。以下是定义按钮和切换屏幕的代码:

button = new TextButton("Play", button_text);
button.setWidth(Gdx.graphics.getWidth() / 4);
button.setHeight(Gdx.graphics.getHeight() / 8);
button.setPosition((Gdx.graphics.getWidth() / 2) - (button.getWidth() / 2), (Gdx.graphics.getHeight() / 2) - (button.getHeight() / 2));
stage.addActor(button);
Gdx.input.setInputProcessor(stage);
button.addListener(new InputListener(){
    @Override
    public boolean touchDown(InputEvent event, float x, float y, int pointer, int button){
        game.setScreen(new PlayScreen(game));
        dispose();
        return true;
    }
});

以下是此屏幕的配置方法:

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

那么如何在从一个屏幕移动到另一个屏幕之前清除所有输入?

2 个答案:

答案 0 :(得分:2)

添加处理方法

Gdx.input.setInputProcessor(null);

并将被修复

答案 1 :(得分:1)

经过进一步研究,我发现了解决问题的方法。

要解决这个问题,在新屏幕的构造函数中,我将输入proccessor设置为GestureListener接口实现的新实例。

private MyGestureListener myGestureListener;

public PlayScreen(Game game) {
    this.game = game;
    myGestureListener = new MyGestureListener();
    Gdx.input.setInputProcessor(new GestureDetector(myGestureListener));
}

为每个屏幕提供自己的GestureListener实例将避免从一个屏幕到下一个屏幕进行输入的问题。