我有三个屏幕的简单结构:开始,菜单和游戏。 当用户在游戏中并按下后退按钮时,返回菜单屏幕,然后再次按下,进入开始屏幕。如下图所示。
当我按下游戏画面上的后退按钮时,问题是直接进入开始画面。应该进入菜单屏幕。
这是正确的方法吗?
课程:
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 :(得分:0)
根据上述评论,您正在致电
Gdx.input.setInputProcessor(stage);
这不会捕捉从
实现的功能implements InputProcessor
尝试在show()中调用inputmultiplexer,例如:
show()
{
InputMultiplexer multiplexer = new InputMultiplexer();
multiplexer.addProcessor(this);
multiplexer.addProcessor(stage);
Gdx.input.setInputProcessor(multiplexer);
}