有没有办法写行
r.keyPress(KeyEvent.VK_SPACE);
这将允许在safari中运行的html 5游戏注册空格键按下,因为游戏内部已经发生了? (在游戏中,我的意思是让游戏做出反应,就好像“空间”被物理压迫一样)
例如,我已经意识到某些KeyEvent仅在某些元素之上注册为已触发。下面的代码将成功在safari的URL栏中注册一个空格键 - 按下事件:
import java.awt.Robot;
import java.awt.AWTException;
import java.awt.event.KeyEvent;
public class SpaceBarPress {
SpaceBarPress(){
}
public static void main (String[] args) {
try{
Robot r = new Robot(); //create instance of robot class
r.mouseMove(600,323); //move cursor over top URL bar
r.mousePress(InputEvent.BUTTON1_MASK); //bring URL bar into focus
r.mouseRelease(InputEvent.BUTTON1_MASK);
r.keyPress(KeyEvent.VK_SPACE); //fire spacebar event
r.keyRelease(KeyEvent.VK_SPACE);
}
catch(AWTException e){
e.printStackTrace();
}
}
}
然而,当在浏览器中运行的html 5游戏上运行相同的代码时,空格键事件将不会在游戏内注册。然而,按下物理空格键会对游戏产生影响。
答案 0 :(得分:0)
机器人按键事件以更快的速度执行,以便应用程序处理。而是在按下和释放事件之间使用一些ms的延迟,比如40,
r.keyPress(KeyEvent.VK_SPACE); //fire spacebar event
r.delay(40);
r.keyRelease(KeyEvent.VK_SPACE);