2015-12-02 62 views
0

我有一个简单的三个屏幕结构:开始,菜单和游戏。 当用户在游戏中并按下后退按钮时,返回到菜单屏幕,然后再次按下,进入开始屏幕。像下面的图片一样。Libgdx - 在Android中的屏幕之间导航

enter image description here

的问题是直行到开始屏幕,当我按下游戏画面后退按钮。应该去菜单屏幕。

这是正确的方法吗?

类:

public class GameScreen extends ScreenAdapter implements InputProcessor, Screen, GestureListener 
public class MenuScreen extends ScreenAdapter implements InputProcessor 
public class StartScreen extends ScreenAdapter implements InputProcessor 

在这两个类别:

Show(){ 
Gdx.input.setCatchBackKey(true); 
} 

在GameScreen类:

@Override 
    public boolean keyDown(int keycode) {  
     if(keycode == Keys.BACK){ 
     bb.setScreen(new MenuScreen(bb,game,adsController,actionResolver)); 
    } 
    return false; 
} 

在菜单屏幕类:

render() { 
if (Gdx.input.isKeyJustPressed(Keys.BACK)){ 
    bb.setScreen(new StartScreen(bb,game,adsController,actionResolver)); 
    } 
} 

注意:下面的代码在GameScreen上可以正常工作,但在MenuScreen或StartScreeen上,当按下后退按钮时,什么都不会发生。为什么?

@Override 
public boolean keyDown(int keycode) {  
    if(keycode == Keys.BACK){ 
     bb.setScreen(new MenuScreen(bb,game,adsController,actionResolver)); 
    } 
    return false; 
    } 

回答

0

按照你上面的评论呼吁

Gdx.input.setInputProcessor(stage); 

这是不会因

implements InputProcessor 

实现的功能尝试调用秀inputmultiplexer(),是这样的:

show() 
{ 
    InputMultiplexer multiplexer = new InputMultiplexer(); 
    multiplexer.addProcessor(this); 
    multiplexer.addProcessor(stage); 
    Gdx.input.setInputProcessor(multiplexer); 
} 
+0

而关于第一个问题(问题是当我按下游戏屏幕上的后退按钮时,会直接进入开始屏幕。应该去菜单屏幕)任何建议?或者这样解决了这两个问题? – user3771516

+0

尝试使用onkeyup代替按键,我怀疑它是一种通过即时调用开始菜单的问题,因为后退按钮仍然关闭。 –

+0

GameScreen Class可以与inputmultiplexer配合使用,但是StartScreen和MenuScreen不会,keyUp或keyDown什么也不做。渲染方法只有Gdx.input.isKeyJustPressed有效。任何想法? – user3771516