Java 键码处理
我目前正在做一个“游戏”,在游戏中我遇到了控制方面的问题。我目前使用的是数字键码值(因为它们在我看来更有效、更漂亮),尽管尝试将以下键与以下值绑定时似乎没有发生任何事情:&带49,é带50,“带222” 我从中获得了代码,这些是我遇到的第一个问题 顺便说一句,我用的是Mac和AZERTY键盘 提前感谢, 实际代码:Java 键码处理,java,processing,numerical,Java,Processing,Numerical,我目前正在做一个“游戏”,在游戏中我遇到了控制方面的问题。我目前使用的是数字键码值(因为它们在我看来更有效、更漂亮),尽管尝试将以下键与以下值绑定时似乎没有发生任何事情:&带49,é带50,“带222” 我从中获得了代码,这些是我遇到的第一个问题 顺便说一句,我用的是Mac和AZERTY键盘 提前感谢, 实际代码: void keyPressed() { if (mode == "azerty") { if (key == CODED) { if (k
void keyPressed() {
if (mode == "azerty") {
if (key == CODED) {
if (keyCode == 38) {
keybool[0] = true;
}
else if (keyCode == 40) {
keybool[1] = true;
}
if (keyCode == 37) {
keybool[2] = true;
}
else if (keyCode == 39) {
keybool[3] = true;
}
if (keyCode == 16) {
keybool[4] = true;
}
if (keyCode == 49) {
keybool[5] = true;
}
if (keyCode == 50) {
keybool[6] = true;
}
if (keyCode == 222) {
keybool[7] = true;
}
}
}
}
void keyReleased() {
if (mode == "azerty") {
if (key == CODED) {
if (keyCode == 38) {
keybool[0] = false;
}
else if (keyCode == 40) {
keybool[1] = false;
}
if (keyCode == 37) {
keybool[2] = false;
}
else if (keyCode == 39) {
keybool[3] = false;
}
if (keyCode == 16) {
keybool[4] = false;
}
if (keyCode == 49) {
keybool[5] = false;
}
else if (keyCode == 50) {
keybool[6] = false;
}
else if (keyCode == 222) {
keybool[7] = false;
}
}
}
}
void keyFunc() {
if (keybool[0]) {
player.move(1);
}
else if (keybool[1]) {
player.move(-1);
}
if (keybool[2]) {
player.turn(-0.5);
}
else if (keybool[3]) {
player.turn(0.5);
}
if (keybool[4]) {
}
if (keybool[5]) {
player.attack(0);
}
else if (keybool[6]) {
player.attack(1);
}
else if (keybool[7]) {
player.attack(2);
}
}
void attack(int attackNum) {
if (attackNum == 0) {
println("SLASH!");
} else if (attackNum == 1) {
println("STAB!");
} else if (attackNum == 2) {
println("PUMMEL!");
}
}
你链接的那些代码都是javascript关键代码。为什么描述不美观?VK_QUOTEDBL、VK_AMPERSAND等。可读性很重要,但不如功能性重要。一种更优雅的方式来处理关键代码,它还可以减少错误概率(忘记中断:p),如下所示: 示例输出:
case 112: // F1
break;
case 113: // F2
break;
case 69: // E
break;
case 10: // Enter
break;
case 18: // Alt
break;
case 115: // F4
break;
您可能希望将该行放入一个方法中
您也可能对这种方法感兴趣(它使用反射),这种方法获取扫描码(一种键盘语言布局独立的键值),但这只适用于Windows。令人遗憾的是,我们没有得到简单的“这是硬件键,这是标识它的数字。”Java中的信息:(
你能发布你试图运行的代码吗?你的问题是什么?什么是模式?为什么要使用==来比较字符串?你应该改用equals()函数。如果你有3个以上的选项,请使用switch语句!这是在什么平台上运行的?读取纯字符有什么问题?(否,“性能”)“除非你显示的测量结果证明差异与你的使用有关,否则不要剪切它。)我确实尝试了这些,但我得到了错误“插入键未找到”。真的吗?它在列表中:“自2007年以来,苹果Macintosh计算机已将插入键替换为Fn键,以允许将最上面一行用作“媒体键”“和传统的功能键一样”(使用插入键,我不是指实际的“插入”键)啊,好吧,回到你原来的问题。当你用你列出的值以外的值绑定“&”、“é”和“'”时,问题是否会继续?
case 112: // F1
break;
case 113: // F2
break;
case 69: // E
break;
case 10: // Enter
break;
case 18: // Alt
break;
case 115: // F4
break;