每次使用slick2D按键时如何触发功能?

时间:2013-06-29 12:13:01

标签: java slick2d

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

1 个答案:

答案 0 :(得分:0)

在你的update方法中,当调用它时,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并不总是返回一个char - 有时它是一个字符串。 (例如,输入将返回“enter”。)

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