Java 键码处理

Java 键码处理,java,processing,numerical,Java,Processing,Numerical,我目前正在做一个“游戏”,在游戏中我遇到了控制方面的问题。我目前使用的是数字键码值(因为它们在我看来更有效、更漂亮),尽管尝试将以下键与以下值绑定时似乎没有发生任何事情:&带49,é带50,“带222” 我从中获得了代码,这些是我遇到的第一个问题 顺便说一句,我用的是Mac和AZERTY键盘 提前感谢, 实际代码: void keyPressed() { if (mode == "azerty") { if (key == CODED) { if (k

我目前正在做一个“游戏”,在游戏中我遇到了控制方面的问题。我目前使用的是数字键码值(因为它们在我看来更有效、更漂亮),尽管尝试将以下键与以下值绑定时似乎没有发生任何事情:&带49,é带50,“带222”

我从中获得了代码,这些是我遇到的第一个问题

顺便说一句,我用的是Mac和AZERTY键盘

提前感谢,

实际代码:

    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;