我正在用Java编写游戏,需要进行鼠标交互。我打算使用MouseAdapter,但是我已经对它进行了一些研究,并且似乎没有任何方法可以确定鼠标指针的位置而不需要点击或操作...这将是什么建议的方式这样做?
几个问题:
鼠标“位置”是指鼠标相对于监视器边界的位置,游戏的界限,还是表示为相对于先前位置的移动?
如何在 窗口 应用程序中禁用鼠标指针? (即第一人称射击游戏,其中鼠标移动旋转玩家视图而不是移动指针)这可能吗?
答案 0 :(得分:3)
查看MouseMotionListener。这将允许您跟踪鼠标移动。它将为您提供鼠标在其所连接的组件中的位置。但是如果你看SwingUtilities类,有一些方便的方法可以将点转换为屏幕或其他组件或监视器。
对于光标,您可以选择为光标设置自己的位图,您可以查看here。或者对于更新的SO答案,您可以查看here。因此,您可以隐藏光标,或将其设置为空位图,然后拦截鼠标移动和事件以控制您的视图。
答案 1 :(得分:1)
关于鼠标事件的教程是: http://java.sun.com/docs/books/tutorial/uiswing/events/mouselistener.html
如果你看这里: http://java.sun.com/javase/7/docs/api/java/awt/event/MouseEvent.html
您可以获得屏幕上的绝对位置或相对于组件的坐标。
如果有一个改变方向的移动,那么你将需要移除鼠标监听器,或者你可以只有一些逻辑,事件处理程序将退出,什么都不做。我认为这会更好,否则你必须跟踪添加和删除监听器的时间。