gpt4 book ai didi

java.awt.Robot.keyPress 用于连续击键

转载 作者:行者123 更新时间:2023-12-04 14:38:49 26 4
gpt4 key购买 nike

所以,这是我的问题。我有一个 java 程序,它会根据用户与 Android 手机的交互方式向游戏(内置于 Unity)发送击键消息。 (我的 java 程序是通过 wi-fi 进行 android 交互的监听器)现在,为了做到这一点,我正在使用 java.awt.Robot 将 keyPresses 发送到游戏窗口。我的监听器程序中编写了以下代码块:

if(interacting)
{
Robot robot = new Robot();
robot.keyPress(VK_A);
robot.delay(20); //to simulate the normal keyboard rate
}

现在,只要用户按下手机的触摸屏,变量 interacting 就会为真,我想要实现的是向游戏传递连续的击键消息链(通过听众)。但是,出于某种原因,这会严重影响性能。我注意到游戏变慢了(帧率迅速下降),甚至电脑也变慢了,一般来说。出了什么问题?我应该在每次 keyPress 之后使用 robot.keyRelease(VK_A) 吗?但是我的游戏有一个映射到按键释放的不同 Action ,我不希望快速按键和释放;我真正想要的是模拟连续击键,完全如果用户手动按下键盘上的 A 键,它的行为方式。请帮忙。

最佳答案

机器人对象实际上将模拟与任何普通用户相同的键盘和鼠标控制模式。因此,在按下某个键的任何情况下,都应将其释放。

Robot robot = new Robot();
robot.delay(10000);
robot.keyPress(KeyEvent.VK_WINDOWS);
robot.keyPress(KeyEvent.VK_R);
robot.keyRelease(KeyEvent.VK_R);
robot.keyRelease(KeyEvent.VK_WINDOWS);
robot.delay(2000);
robot.keyPress(KeyEvent.VK_N);
robot.keyRelease(KeyEvent.VK_N);
robot.keyPress(KeyEvent.VK_O);
robot.keyRelease(KeyEvent.VK_O);
robot.keyPress(KeyEvent.VK_T);
robot.keyRelease(KeyEvent.VK_T);
robot.keyPress(KeyEvent.VK_E);
robot.keyRelease(KeyEvent.VK_E);
robot.keyPress(KeyEvent.VK_P);
robot.keyRelease(KeyEvent.VK_P);
robot.keyPress(KeyEvent.VK_A);
robot.keyRelease(KeyEvent.VK_A);
robot.keyPress(KeyEvent.VK_D);
robot.keyRelease(KeyEvent.VK_D);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);

这个例子将打开一个记事本窗口。

关于java.awt.Robot.keyPress 用于连续击键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10069126/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com