使用 Inputmultiplexer 在 Android 上捕获返回键
Catching the Back key on Android with an Inputmultiplexer
我还有一个问题要问你。
所以我正在尝试让用户输入在选项菜单上工作。为此我得到了:
1.舞台和
2. 一个额外的输入适配器
我需要额外的输入适配器来捕捉 Android 上的 BACK 键。所以我使用了 Inputmultiflexer,它允许我使用两个输入处理器。
InputMultiplexer multiplexer = new InputMultiplexer();
multiplexer.addProcessor(this);
multiplexer.addProcessor(stage);
Gdx.input.setInputProcessor(multiplexer);
Gdx.input.setCatchBackKey(true);
我检查后退按钮的方法如下所示:
@Override
public boolean keyUp(int keycode){
if(keycode == Input.Keys.ESCAPE || keycode == Input.Keys.BACK){
new MenuScreen(game);
return true;
}
return false;
}
问题:它根本不工作。当使用 Android 上的返回键或桌面上的 Escape 键时,它不会返回。按下按钮时控制台打印的唯一内容是:
Load KCM of non-default device may incur unexpected result
老实说,我不知道它的意思,Google 也没有帮助我。
那么我该如何让它工作呢?
首先在调试时,你应该使用像这样的东西:
System.out.println("back was pressed");
如果您在控制台中看到该输出,则说明输入正常。如果可行,我在您的代码中看到的唯一问题是您可能创建了一个新屏幕 class,您从未让它切换屏幕。我注意到你传入了游戏对象,所以你应该有这样的东西:
game.setScreen(new MenuScreen(game));
希望对您有所帮助。
我还有一个问题要问你。
所以我正在尝试让用户输入在选项菜单上工作。为此我得到了: 1.舞台和 2. 一个额外的输入适配器
我需要额外的输入适配器来捕捉 Android 上的 BACK 键。所以我使用了 Inputmultiflexer,它允许我使用两个输入处理器。
InputMultiplexer multiplexer = new InputMultiplexer();
multiplexer.addProcessor(this);
multiplexer.addProcessor(stage);
Gdx.input.setInputProcessor(multiplexer);
Gdx.input.setCatchBackKey(true);
我检查后退按钮的方法如下所示:
@Override
public boolean keyUp(int keycode){
if(keycode == Input.Keys.ESCAPE || keycode == Input.Keys.BACK){
new MenuScreen(game);
return true;
}
return false;
}
问题:它根本不工作。当使用 Android 上的返回键或桌面上的 Escape 键时,它不会返回。按下按钮时控制台打印的唯一内容是:
Load KCM of non-default device may incur unexpected result
老实说,我不知道它的意思,Google 也没有帮助我。
那么我该如何让它工作呢?
首先在调试时,你应该使用像这样的东西:
System.out.println("back was pressed");
如果您在控制台中看到该输出,则说明输入正常。如果可行,我在您的代码中看到的唯一问题是您可能创建了一个新屏幕 class,您从未让它切换屏幕。我注意到你传入了游戏对象,所以你应该有这样的东西:
game.setScreen(new MenuScreen(game));
希望对您有所帮助。