LWJGL关键问题

时间:2014-08-25 12:15:04

标签: java keyboard key lwjgl

我正在我的游戏引擎中创建一个类,它会检查键输入,我在enum中设置了所有键,我将从列表中选择序号int当我需要它并且它看起来像它工作时,没有警告没有错误然后它开始,当我尝试检查我的主要输入由于某种原因它崩溃。有人可以帮助我。

来自我的主要课程:

private void OnGameUpdate()
{
    KeyManager key = new KeyManager();

    if(key.KeyPressed(Keys.KEY_W))
    {
        JOptionPane.showMessageDialog(null, "Hello, it works!", "Test", JFrame.ERROR);
    }
}

密钥管理器类:

public class KeyManager 
{
    private int CurrentKey;

    public enum Keys
    {
        KEY_0,
        KEY_1,
        KEY_2,
        //[...]all the other keys...
        KEY_Y,
        KEY_YEN,
        KEY_Z,
        KEYBOARD_SIZE
    }

    public boolean KeyPressed(Keys key)
    {
        this.CurrentKey = key.ordinal();
        return Keyboard.isKeyDown(CurrentKey);
    }

}

1 个答案:

答案 0 :(得分:0)

致电

Keyboard.isKeyDown(CurrentKey);

你正在使用枚举CurrentKey - 但是当你使用enum.ordinal()时,你没有得到代表键的int值......

您必须将密钥映射到枚举,因为当您运行代码时:

Keys.KEY_0.ordinal() = 0; //what comes out

但你想要

Keys.Key_0.ordinal() = 11; //what would be expected

这样做的一种方法是创建一个带编号的枚举:

public enum Keys
{
    KEY_0 (11),
    KEY_1 (2),
    //and so on

    KEY_xy(4711);

    int id;
    Keys(int id){
        this.id = id
    }

    @override
    int ordinal(){
        return id;
    }
}

我必须承认我是从脑子里写出那个枚举,所以也许它上面有轻微的输入错误...