2015-12-02 45 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