Java - Slick2D:如何检索最后一个按键?

时间:2014-05-17 20:48:49

标签: java input game-engine lwjgl slick2d

经过大量的搜索,我找不到解决这个问题的简单方法。

我正在整合一个键盘设置部分,我需要弄清楚用户何时按下一个键以及按下了哪个键。

我正在使用Java Slick2D游戏引擎。 Slick2D java文档:http://slick.ninjacave.com/javadoc/

示例(没有工作):

private void setLastKey(GameContainer container){
    if(clickedRectangle != null){
        lastKeyPressed = container.getInput();
    }else{
        lastKeyPressed = null;
    }
}

2 个答案:

答案 0 :(得分:0)

update方法中,传递GameContainer个对象。您可以使用方法container.getInput()来获取Input对象。你可以使用它。

public void update(GameContainer container, StateBasedGame game, int delta) throws SlickException {
    if (container.getInput().isKeyPressed(Input.KEY_N))
        System.out.println("N key is pressed.");
}

对此帖发表评论:

  

你不能要求按下什么键,因为多个键可以。

答案 1 :(得分:0)

覆盖keyPressed(int key, char c)

中的BasicGameState
private void setKeyBind(){
    if(clickedRectangle == null){
        lastKeyChar = '\u0000';
        lastKeyCode = 0;
    }
    if(lastKeyChar != '\u0000'){
        clickedRectangle = null;
    }
}

public void keyPressed(int key, char c){  //Overrides BasicGameState
    if(clickedRectangle != null && lastKeyChar == '\u0000'){
            lastKeyChar = c;
            lastKeyCode = key;
            System.out.println("Key: "+c + " KeyCode: "+key);
    }
}