机器人按键按下脉冲并且不会给出一致的按压

时间:2014-02-25 11:07:17

标签: java processing keyevent awtrobot

在处理中我在处理脚本中使用Java Robot类来按下游戏键。无论以何种方式使用它,按键都会闪烁并且不稳定地按照我告诉它按下的任何持续时间脉冲,因此在模拟游戏中快速按A键四到五次。我怎样才能解决这个问题?我正在使用这样的Robot类:

void robotPress() {
 roboReady = false;
 if (keyPress == 1){
   robot.keyPress(KeyEvent.VK_A);
   robot.delay(roboDelayA);
   robot.keyRelease(KeyEvent.VK_A);

 }else if (keyPress == 2){
   //b
   robot.keyPress(KeyEvent.VK_B);
   robot.delay(roboDelayA);
   robot.keyRelease(KeyEvent.VK_B);
 }else if (keyPress == 3){
   //x
   robot.keyPress(89);
   robot.delay(roboDelayA);
   robot.keyRelease(89);
 }else if (keyPress == 4){
   //y
   robot.keyPress(91);
   robot.delay(roboDelayA);
   robot.keyRelease(91);
 }else if (keyPress == 5){
   //l
   robot.keyPress(67);
   robot.delay(roboDelayA);
   robot.keyRelease(67);
 }else if (keyPress == 6){
   //r
   robot.keyPress(82);
   robot.delay(roboDelayA);
   robot.keyRelease(82);
 }else if (keyPress == 7){
   //start
   robot.keyPress(81);
   robot.delay(roboDelayA);
   robot.keyRelease(81);
 }else if (keyPress == 8){
   //select
   robot.keyPress(86);
   robot.delay(roboDelayA);
   robot.keyRelease(86);
 }else if (keyPress == 9){
   //up
   robot.keyPress(38);
   robot.delay(roboDelay);
   robot.keyRelease(38);
 }else if (keyPress == 10){
   //down
   robot.keyPress(40);
   robot.delay(roboDelay);
   robot.keyRelease(40);
 }else if (keyPress == 11){
   //left
   robot.keyPress(37);
   robot.delay(roboDelay);
   robot.keyRelease(37);
 }else if (keyPress == 12){
   //right
   robot.keyPress(39);
   robot.delay(roboDelay);
   robot.keyRelease(39);
 }
 keyPress = 0;
 roboReady = true;
}

变量keyPress是它寻找按下哪个按钮的代码。所有按钮均正确按下并释放。我使用thread("robotPress");在不同的线程中调用此函数,它与void draw()中的函数没有区别;为了表现。没有任何错误,我所有的摆弄并没有改变任何东西。对于大多数按钮,我需要它是一个简短的单脉冲,但对于方向数据,我需要保持一段短暂的时间。有什么想法吗?

编辑:您可以评论密钥与VK_A等的数字数据,我必须以不同的方式导入依赖项以使keyEvent.VK_A不会出现“模糊”错误,因此我将其更改为。它不会影响我遇到的任何问题。

0 个答案:

没有答案