3

对于玩过 Madness Interactive 的玩家来说,最令人沮丧的事情之一就是当光标离开游戏区域时,你不小心点击了。这会导致游戏散焦,您的角色会在几秒钟内死亡。为了解决这个问题,我想制作一个可以在后台运行的 java 应用程序,它将光标保持在屏幕内,直到我按下一个键,比如 ESC 或其他东西。

我看到了两种实现方式,但我不知道它们是否可行。

  1. 制作一个与 Madness Interactive 的渲染区域大小相匹配的 AWT 帧,并使用它来控制光标。
  2. 使用一些脱离上下文的操作系统调用将光标保持在给定区域。

方法#1的优点:更容易实现框架的大小调整,以便用户可以看到封闭区域的形状和位置。

方法 #1 的潜在问题:AWT 框架可能需要从运行游戏的浏览器窗口中窃取焦点,从而使整个解决方案毫无意义。

我的问题是,这些方法中的任何一种都可行吗?如果没有,是否有可行的选择?

编辑:如有必要,我愿意使用另一种编程语言。

EDIT2:我可能会为此开发一个浏览器插件,但我以前从未做过这种开发。我会研究一下。

4

2 回答 2

2

如果您仍然对使用 Java 工作感兴趣,这里有一个可能的解决方案。

首先,为了将光标限制在一个区域内,您可以使用 Java Robot 类。

mouseMove(int x, int y);

然后,您可以使用 AWT 的 MouseInfo 来获取鼠标光标的位置。

PointerInfo mouseInfo = MouseInfo.getPointerInfo();
Point point = mouseInfo.getLocation();
int x = (int) point.getX();
int y = (int) point.getY();

然后,每当鼠标光标的xy值超过某个点时,使用 Java Robot 类将它们移回。

于 2012-12-12T02:30:10.020 回答
1

如果这是针对基于浏览器的游戏,请考虑编写一个greasemonkey 脚本,该脚本充当浏览器扩展,可以过滤为仅在游戏站点上运行。

在最简单的情况下,假设可点击区域是(0,0) - (300,400),那么您可以将以下事件处理程序添加到页面:

$(document).on('click', function(event) {
  if (event.pageX > 300 || event.pageY > 400) {
    return false;
  }
});

您可以进一步优化您的脚本以执行以下操作:

  1. 将浏览器调整为适合玩游戏的大小
  2. 而不是检查点击的绝对 x,y 坐标,而是检查它是否在您不想接收点击的页面元素内
  3. 将自定义键绑定添加到 umm.. 帮助您在游戏中
  4. 编写一个可以自己玩游戏的 javascript 机器人
于 2012-12-12T02:26:28.757 回答