我正在制作一个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();
}
那么如何在从一个屏幕移动到另一个屏幕之前清除所有输入?
答案 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实例将避免从一个屏幕到下一个屏幕进行输入的问题。