-1

我正在尝试为我的游戏制作一个图形文本框。我需要触发一个名为 addChar(char c) 的函数,其中 c 是以字符形式按下的键。

4

1 回答 1

0

在您的更新方法中,slick 在调用它时传入的参数之一是 GameContainer。假设更新函数看起来像这样:

public void update(GameContainer gc, int delta)  throws SlickException     
{
...
}

如果您从 gc 获得输入,则可以询问输入是否按下了特定键。

之后,您可以使用输入的 getKeyName(int code) 方法在刚刚获得的 int 上获得按下哪个键的实际表示。最后,用你得到的 c 调用你想要的方法。

public void update(GameContainer gc, int delta)  throws SlickException     
{
Input input = gc.getInput();
//here you should create a collection of all the keys you're interested to check
Integer[] collection = {Input.KEY_C, Input.KEY_B, Input.KEY_A};
for (Integer key: collection)
{
  if (input.isKeyPressed(key))
  {
  char c = input.getKeyName(int code);
  addChar(char c);
  }
}

请注意,虽然 getKeyName 并不总是返回一个字符 - 有时它是一个字符串。(例如,输入将返回“输入”。)

您可能想添加一个休息时间;在循环中,如果您只对一个键感兴趣。此外,在这里可以找到所有可能的键和一些有用方法的有用参考:http: //slick.ninjacave.com/javadoc/

于 2013-07-03T02:33:31.230 回答