2014-10-09 102 views
0

我正在制作一个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(); 
} 

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

+0

你可以发布PlayScreen类及其侦听器方法吗?可能是误解触摸事件的一个问题。 (为了快速解决问题,我认为你有,可以将touchDown方法更改为touchUp以上?) – 2014-10-10 06:28:22

+0

我找到了解决方案,并将其发布为答案 – 2014-10-13 22:55:29

回答

0

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

要解决此问题,在新屏幕的构造函数中,将输入处理器设置为GestureListener接口实现的新实例。

private MyGestureListener myGestureListener; 

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

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

1

添加对Dispose方法

Gdx.input.setInputProcessor(null); 

,将固定

+0

这并没有解决问题 – 2014-10-09 23:45:23

+0

请不要将问题解决只是发布“试试这个”风格的答案。相反,试着解释你为什么要提出你的建议。 – Gary 2014-10-10 00:37:36

+0

我用电话回复对不起。切换屏幕时,通常要做的事情就是这样。你总是可以把它放在hide()上;或在新屏幕上设置输入。 – Ismaw34 2014-10-10 18:01:48