【问题标题】:Libgdx - Navigating between screens in AndroidLibgdx - 在 Android 中的屏幕之间导航
【发布时间】:2015-12-02 09:37:25
【问题描述】:

我有一个简单的三个屏幕结构:开始、菜单和游戏。 当用户在游戏中并按下返回按钮时,返回到菜单屏幕,再次按下返回,进入开始屏幕。如下图所示。

问题是当我按下游戏屏幕上的后退按钮时,它会直接进入开始屏幕。应该进入菜单屏幕。

这样做的正确方法是什么?

类:

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;
  }

【问题讨论】:

    标签: android libgdx


    【解决方案1】:

    根据上面的 cmets 你正在调用

    Gdx.input.setInputProcessor(stage);
    

    这不会捕获从

    实现的功能
    implements InputProcessor
    

    尝试在 show() 中调用 inputmultiplexer,类似于:

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

    【讨论】:

    • 关于第一个问题(问题是当我在游戏屏幕上按后退按钮时直接进入开始屏幕。应该进入菜单屏幕)有什么建议吗?还是这种方式解决了这两个问题?
    • 尝试使用 onkeyup 而不是 key down,我怀疑它是一种失败的问题,它会立即调用开始菜单,因为后退按钮仍处于按下状态。
    • GameScreen 类与 inputmultiplexer 一起工作,但 de StartScreen 和 MenuScreen 不,keyUp 或 keyDown 什么都不做。只有 Gdx.input.isKeyJustPressed on render 方法有效。有什么想法吗?
    • 那你为什么要实现 InputProcessor?捕捉屏幕输入听起来不是很有用,如果你想复制行为也许可以创建一个可扩展的 MyScreen 类?
    • 我在一个类上忘记了 multiplexer.addProcessor(this) 这一行。我的错。添加了这一行,工作正常。 keyup 解决了后退按钮的问题。非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多