【发布时间】:2017-03-22 16:56:51
【问题描述】:
再一次,新手需要你的建议,亲切的陌生人。
我有一些问题,即使在谷歌上搜索后也无法解决。
我的游戏中有 2 个阶段,每个阶段都有一个包含按钮的表格: 第一个存储带有游戏按钮的表格:向上/向下移动和暂停 第二个存储一个代表暂停菜单的表。
如果单击“暂停”(游戏暂停并且)我想绘制现在可以处理输入的第二阶段。
我初始化了2个阶段:
public void create(){
...
mainStage = new Stage(viewport,batch);
menuStage = new Stage(viewport,batch);
Gdx.input.setInputProcessor(mainStage);
...
暂停按钮有一个监听器,它将(枚举)状态设置为暂停 (与暂停菜单中的“恢复”按钮相同,将状态设置为 RUNNING)
pause.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
thisState = STATE.PAUSE;
Gdx.input.setInputProzessor(menuStage);
}
});
然后在渲染方法中
switch (gameState) {
case RUNNING:
deltaTime = Gdx.graphics.getDeltaTime();
stateTime += deltaTime; // for the animations
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.setProjectionMatrix(camera.combined);
update(deltaTime);
batch.begin();
... draws the characters
batch.end();
mainStage.act(deltaTime);
mainStage.draw();
break;
case PAUSE:
Gdx.gl.glClearColor(0, 0, 0, 0.6f); I want the background to become slightly darker.
Gdx.app.log("Game State","Game is PAUSED");
menuStage.act(deltaTime);
menuStage.draw();
}
如果我启动 mainStage 按钮出现,但不可点击。 我注意到的是,如果我单击屏幕中间,游戏就会停止。然而,“暂停”按钮的监听器显然甚至没有对此做出反应,因为控制台上没有通知,游戏已暂停,也没有按钮被点击。
我的开始屏幕只使用一个阶段,并且在相同的设置下完美运行。
我认为原因可能是:
- 我错误地使用了 setInputProcessor
- 我错误地使用了 Viewport(并调整了大小)
- 我必须以某种方式让第一阶段消失,然后才能绘制新阶段
非常感谢您的帮助!谢谢。
对不起我的英语不好 .. 以及我的格式(这是我在这里的第一篇文章)
【问题讨论】:
-
我看不出是什么阻碍了您的舞台获得正确的输入,但我确实看到了一些您可以修复的错误。可能会让你更接近。首先,在暂停状态下,您不会清除颜色缓冲区位。其次,将透明颜色设置为具有较低的 alpha 不会使其更暗——没有什么比黑色更暗。第三,您只在游戏模式下更新 deltaTime 和 stateTime,因此这些值将在暂停模式下被错误的值“卡住”。
-
试试 ClickListener
-
@Tenfour04 非常感谢,即使它没有解决我的问题,至少已经消除了一些其他潜在的错误......如果它不打扰你,你能建议一个更好的方法来创建一个暂停窗口游戏?
-
@eldo ChangeListener 通常可以工作,至少在我的 StartScreen 中它工作得很好,但是谢谢
-
我认为您的方法没有问题,但使用单个阶段可能更简单。将所有暂停菜单内容添加到组而不是舞台。然后在切换游戏状态时在舞台上添加或删除该组。
标签: java android button libgdx stage