LibGdx新屏幕反应从旧屏幕触摸
问题描述:
我正在制作一个LibGdx游戏。我有一个主菜单和一个按钮,用于将用户发送到播放屏幕。在玩游戏画面时,游戏反应与用户点击按钮位于前一屏幕中的位置时的反应。下面是定义按钮切换屏幕代码: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;
}
});
下面是该屏幕的Dispose方法:
@Override
public void dispose() {
stage.dispose();
}
那么,如何从一个屏幕移动到下一个前清除所有输入?
答
经过进一步的研究,我发现了一个解决我的问题。
要解决此问题,在新屏幕的构造函数中,将输入处理器设置为GestureListener接口实现的新实例。
private MyGestureListener myGestureListener;
public PlayScreen(Game game) {
this.game = game;
myGestureListener = new MyGestureListener();
Gdx.input.setInputProcessor(new GestureDetector(myGestureListener));
}
给每个屏幕自己的GestureListener实例将避免输入从一个屏幕进行到下一个屏幕的问题。
你可以发布PlayScreen类及其侦听器方法吗?可能是误解触摸事件的一个问题。 (为了快速解决问题,我认为你有,可以将touchDown方法更改为touchUp以上?) – 2014-10-10 06:28:22
我找到了解决方案,并将其发布为答案 – 2014-10-13 22:55:29