在处理中我在处理脚本中使用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()
中的函数没有区别;为了表现。没有任何错误,我所有的摆弄并没有改变任何东西。对于大多数按钮,我需要它是一个简短的单脉冲,但对于方向数据,我需要保持一段短暂的时间。有什么想法吗?