gpt4 book ai didi

android - catchbackkey 不工作 (libgdx) Android

转载 作者:太空狗 更新时间:2023-10-29 16:42:21 26 4
gpt4 key购买 nike

我正在尝试使用 Android 设备上的后退键来为我的游戏设置屏幕......但它似乎不起作用......我在网上看了一些帖子 n 做了这个......

在菜单屏幕中,如果按下后退键,应用程序应该退出......但是没有触发任何 Action ......即使我多次按下后退键也没有触发任何 Action ......

public class MenuScreen extends AbstractScreen implements InputProcessor  {

@Override
public void show()
{
Gdx.input.setInputProcessor(this);
Gdx.input.setCatchBackKey(true);
Gdx.input.setCatchMenuKey(true);

}


@Override
public boolean keyDown(int keycode) {
// TODO Auto-generated method stub
if(keycode == Keys.BACK)
{
Gdx.app.exit();
}

return false;
}

在 LevelScreen 中,当按下后退键时,屏幕应设置为 menuscreen ,但我的应用程序将退出有没有办法禁用后退键??按下后退键应该什么都不会发生?

  public class LevelScreen extends AbstractScreen  implements InputProcessor {

@Override
public void show()
{
Gdx.input.setInputProcessor(this);
Gdx.input.setCatchBackKey(true);
Gdx.input.setCatchMenuKey(true);

}

@Override
public boolean keyDown(int keycode) {
if(keycode == Keys.BACK)
{
game.setScreen(game.geMenuScreen());
}
// TODO Auto-generated method stub
return false;
}

最佳答案

首先,您可能希望在输入处理器中将其从使用 keyDown() 更改为 keyUp()。 keyUp() 只会在用户释放按键时调用一次,但 keyDown() 会在后退键按下的每一帧调用(大约每秒 60 次)。因此,您的应用可以切换屏幕并在 2 帧内关闭您,这可能不是您想要的。

这可能就是您在关卡屏幕上看到应用程序关闭的原因。它将进入 LevelScreen -> ScoreScreen -> MenuScreen,然后在 3 帧(大约 50 毫秒)后退出。以下是在 ScoreScreen 中启动的应用程序的一些示例代码。当用户按下(并释放)后退按钮时,返回菜单屏幕。接下来,当他们再次按下(并释放)后退按钮时,它会关闭应用程序。

您需要根据您的游戏调整此代码,但这应该能让您有所了解和使用。 (注意:我已验证此功能适用于 Android 2.3.3 和 LibGDX 0.9.8)

public class BackTest extends Game {
public Screen menu;
public Screen score;

@Override public void create() {
Gdx.input.setCatchBackKey(true);
this.menu = new MenuScreen(this);
this.score = new ScoreScreen(this);
this.setScreen(this.score);
}

public static abstract class AbstractScreen implements Screen {
@Override public void render(final float delta) {}
@Override public void resize(final int width, final int height) {}
@Override public void show() {}
@Override public void hide() {}
@Override public void pause() {}
@Override public void resume() {}
@Override public void dispose() {}
}

public static class MenuScreen extends AbstractScreen {
public final BackTest game;

public MenuScreen(final BackTest game) {
this.game = game;
}

@Override public void show() {
Gdx.app.log("Menu", "Show");
Gdx.input.setInputProcessor(new InputAdapter() {
@Override public boolean keyUp(final int keycode) {
if (keycode == Keys.BACK) {
Gdx.app.log("Menu", "Quit");
Gdx.app.exit();
}
return false;
}
});
}
}

public static class ScoreScreen extends AbstractScreen {
public final BackTest game;

public ScoreScreen(final BackTest game) {
this.game = game;
}

@Override public void show() {
Gdx.app.log("Score", "Show");
Gdx.input.setInputProcessor(new InputAdapter() {
@Override public boolean keyUp(final int keycode) {
if (keycode == Keys.BACK) {
Gdx.app.log("Score", "Back");
ScoreScreen.this.game.setScreen(ScoreScreen.this.game.menu);
}
return false;
}
});
}
}
}

关于android - catchbackkey 不工作 (libgdx) Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15719936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com