我正在我的游戏引擎中创建一个类,它会检查键输入,我在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);
}
}
答案 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;
}
}
我必须承认我是从脑子里写出那个枚举,所以也许它上面有轻微的输入错误...