Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-Slick2D:如何检索上次按下的键?_Java_Input_Game Engine_Lwjgl_Slick2d - Fatal编程技术网

Java-Slick2D:如何检索上次按下的键?

Java-Slick2D:如何检索上次按下的键?,java,input,game-engine,lwjgl,slick2d,Java,Input,Game Engine,Lwjgl,Slick2d,经过大量的搜索,我还没有找到一个简单的解决办法 我合并了一个键绑定设置部分,我需要知道用户何时按下一个键以及按下了哪个键 我正在使用Java Slick2D游戏引擎。 二维java文档: 示例(不起作用): 在update方法中,传递GameContainer对象。您可以使用方法container.getInput()获取Input对象。你可以用这个 public void update(GameContainer container, StateBasedGame game, int delt

经过大量的搜索,我还没有找到一个简单的解决办法

我合并了一个键绑定设置部分,我需要知道用户何时按下一个键以及按下了哪个键

我正在使用Java Slick2D游戏引擎。 二维java文档:

示例(不起作用):


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.");
}
引用对这篇文章的评论:

您不能询问按下了什么键,因为可以是多个键

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);
    }
}

为什么我不能说“先谢谢你?”,对不起,我的无知。太夸张了。有一个关于这个的讨论。基本上,堆栈溢出用于专业问答,像“plz halp”或“谢谢”这样的东西会分散对实际问题的注意力。这指定了一个键,我想知道按下了哪个键。@Markusmoo Slick使用LWJGL的输入,只有一个检查,没有事件。您不能要求按什么键,因为可以选择多个键。正如前面提到的,您不能要求,因为可以选择多个键。@LeeAllan所以我必须检查所有键?如果是这样,我想我有很多打字要做。@Markusmoo你在干什么?也许有办法解决这个问题,如果你能更具体一点,我可以帮你更多。
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);
    }
}