【问题标题】:Catching back and home keys追回和回家的钥匙
【发布时间】:2014-09-03 01:30:24
【问题描述】:

在我使用 libGDX v1.3.1 设置我的新项目后,我遇到了一些应该很容易的事情。在我扩展游戏的主要课程中,我有:

Gdx.input.setCatchBackKey(true); 

但我无法得到任何响应(在渲染方法中):

if(Gdx.input.isButtonPressed(Keys.BACK)){
    this.dispose();
}

虽然我可以看到在 logCat 控制台中按下了按钮。

我需要提一下,在 libGDX 版本 1.0.0(或第一个带有 gradle 的版本)之前,我一直在使用完全相同的代码。

注意:我也尝试过实现 InputProcessor,然后设置输入处理器。结果是一样的。

对于主页按钮:使用 Gdx.input.setCatchMenuKey(true); 不起作用。

【问题讨论】:

  • 只是为了确认一下:1) 同样的代码对你的 libgdx 1.0 有效吗? 2)您确定没有调用“this.dispose()”(您是否在isButtonPressed 案例中添加了日志语句?)。请参阅stackoverflow.com/questions/15501703/…setInputProcessorsetCatchBackKey 的顺序很重要。
  • 1.是的,这确实有效(在没有 gradle 的旧版本中,在第一个有 gradle 的版本中)。 2、this.dispose()没有问题;因为 if(Gdx.input.isButtonPressed(Keys.BACK)) 从未激活。我已经把 System.out.println("working");只需确定方法 ghets 是否已激活。但什么都没有。 3. 我设置输入处理器与否无关紧要。 if(keycode == Keys.BACK){ 或 if(Gdx.input.isButtonPressed(Keys.BACK)){ 永远不会被调用。

标签: libgdx


【解决方案1】:

使用isKeyPressed 代替isButtonPressed。按钮仅指桌面游戏上的三个鼠标按钮。 Android 上的一切都是 Key(或 Peripheral)。

您提到了“主页按钮”,但您发布的代码是针对菜单按钮的。除非您让清单声明您的应用程序为启动器替代品,否则无法捕捉主页按钮,在这种情况下,主页按钮将始终打开您的应用程序,即使它已关闭,用户也无法轻松获得到主屏幕。而且 libgdx 没有内置该功能,因为那会很奇怪。您必须自己在清单和主 Activity 中实现它。

此外,处理this,无论this 是什么,从输入处理程序中执行听起来很危险。您可能即将渲染内容并导致崩溃。但我不确定你想从哪里使用它。也许没关系。

【讨论】:

  • 这正是我所做的。我现在觉得自己好傻。谢谢,对于 this.dispose():我刚刚尝试了我能记住的任何东西,所以它只是为了测试目的。
猜你喜欢
  • 1970-01-01
  • 2015-08-16
  • 1970-01-01
  • 1970-01-01
  • 2014-06-04
  • 2023-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多