java - LIBGDX:InputAdapter 的 keyDown、keyUp 等返回值的含义是什么

标签 java libgdx return-value

我在处理来自多个使用 keyDown/keyUp 的独立 InputAdapter 的输入时遇到问题。

Gdx.input.setInputProcessor( new InputMultiplexer( keyboardController1, keyboardController2, keyboardController3));

只有第一个有效,其他的无效;在本例中为 keyboardController1。 我猜它与 keyDown() 方法末尾的 return true; 有关。 我尝试阅读文档、教程、帖子等但是,我仍然无法很好地理解返回值的含义和作用,也无法很好地理解我应该将其设置为哪个 boolean 值。 我的问题: keyDown/keyUp等的boolean返回值是什么意思?

最佳答案

您返回的 boolean 值应该是:

  1. true,如果此 InputProcessorInputAdapter 处理了输入。
  2. false,如果它没有处理输入。

想想一款游戏,其中 2 名玩家在同一台电脑上玩(例如分屏)。
一名玩家使用“WASD”控制,第二名玩家使用“箭头键”控制。因此,第一个玩家的 InputProcessor 仅处理“WASD”键,而第二个玩家的 InputProcessor 仅处理“方向键”。
如果按下的键是“W、A、S 或 D”,第一个 InputProcessor 会处理它,您不需要将它交给第二个。所以你返回 true。如果按下的键是“箭头键”之一,第一个 InputProcessor 将不会处理它,因此您返回 false。

多路复用器得到这个返回值并说:

  1. 返回为true,输入已处理,将其丢弃。
  2. 返回为false,输入未处理,将其交给下一个处理器。

希望你明白我在说什么:P

编辑keyDown(int keyCode)keyUp(int keyCode)等方法都有int keyCode,它告诉你按下了哪个键。通常你使用一个开关来知道按下了哪个键。这个开关看起来像这样:

switch(keyCode) {
case Keys.W:
     // Handle the event for "W" key pressed
case Keys.A:
     // Handle the event for "A" key pressed
// Other cases
default:
     return false;
}
return true;

对于评论中的其他问题:如果 1 个玩家由 W、A、S、D 控制,他不需要处理其他键的输入。所以他返回 false,如果他没有处理输入,否则返回 true。 第二个玩家由方向键控制,因此他不需要处理其他键,如 W、A、S 或 D 键。 如果您有多个 InputProcessor,它们必须处理相同的键,您必须返回 false,以便 InputMultiplexer 将事件传递给每个 InputProcessor.

关于java - LIBGDX:InputAdapter 的 keyDown、keyUp 等返回值的含义是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22779253/

相关文章:

java - 如何基于注解(类似于Android R)自动生成具有静态成员的类

libgdx - 在 libgdx 中是否可以呈现 HTML(或者,创建帮助屏幕的最佳实践是什么)?

javascript - ASP.NET:如何从弹出窗口获取 JavaScript 变量?

jasper-reports - 如何将变量值从子报表传递到主报表并根据 iReport Designer Jasper Reports 中的该值显示/隐藏详细信息带?

java - 如何验证sql查询语法?

java - 用于 MS SQL Server 的 Eclipse 中 Tomcat 的连接池

javascript - 如果使用 Socket.IO,是否可以为 HTML 编译 LibGDX 游戏?如果是这样,怎么办?

python - 在方法之间共享值

java - 加载 .jsp 文件后,是否有一种普遍接受的方法可以立即从 mysql 数据库中获取数据?

java - org.openqa.selenium.NoSuchElementException : Returned node (null) was not a DOM element when trying to locate card-fields-iframe by CssSelector