cof*_*net 4 java return-value libgdx
我在处理来自多个使用keyDown/keyUp的独立InputAdapter的输入时遇到问题.
Gdx.input.setInputProcessor( new InputMultiplexer( keyboardController1, keyboardController2, keyboardController3));
只有第一个在线,而其他没有; 在这种情况下keyboardController1.我猜它与方法return true;的末尾有关keyDown().我尝试阅读文档,教程,发布...等但是,我仍然无法很好地掌握返回值的含义和做法,也不能确定应该将其设置为哪个布尔值.我的问题:keyDown/keyUp的布尔返回值是什么意思(等等)?
boolean您返回的值应为:
InputProcessor或InputAdapter处理输入,则为true .想想一个游戏,其中2个玩家在同一台PC上玩(例如分屏).
一个玩家用"WASD"控制,第二个用"箭头键"控制.因此InputProcessor,第一个玩家只处理"WASD"键,InputProcessor而第二个玩家只处理"箭头键".
如果按下的键是"W,A,S或D",则第一个InputProcessor处理它,你不需要将它交给第二个.所以你回来了true.如果按下的键是"箭头键"之一,则第一个InputProcessor不会处理它,因此您返回false.
多路复用器获得此返回值并说:
true,处理输入,扔掉它.false,输入未处理,将其提供给下一个处理器.希望你明白我在说什么:P
编辑:对keyDown(int keyCode),keyUp(int keyCode)和其它方法有int keyCode,它告诉你whihc键被按下.通常您使用开关来知道按下了哪个键.此开关如下所示:
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;
Run Code Online (Sandbox Code Playgroud)
对于评论中的其他问题:如果1个玩家由W,A,S,D控制,则他不需要处理其他键的输入.所以他返回false,如果他没有处理输入,否则返回true.第二个玩家由箭头键控制,因此他不需要处理其他键,如W,A,S或D键.如果你有多个InputProcessor必须处理相同键的一个,你必须返回false,以便InputMultiplexer将事件传递给每个键InputProcessor.
| 归档时间: |
|
| 查看次数: |
608 次 |
| 最近记录: |