,我需要在任何时候都x和鼠标的y值,相对的JPanel。这意味着每次调用paintComponent方法时都必须刷新值。但是,我已经使用mouseMoved()和mouseDragged(),因为我正在翻译图形本身,所以我需要不断刷新它。是否有mouselisteners有一个方法来简单地得到您的鼠标的x和y值,而不必创建一个方法?如何不断更新鼠标相对于JPanel的x和y位置,而不需要事件?所以在游戏中,我忙着做
回答
鼠标听众得到MouseEvent
,从中可以获取鼠标的位置。
class MyMouseListener extends MouseMotionAdapter {
@Overrride
public void mouseDragged(MouseEvent e) {
int mouse_x = e.getX();
int mouse_y = e.getY();
// ... use mouse_x & mouse_y
}
}
注意:如果您需要使用#paint(Graphics g)
方法,您应该存储此鼠标位置。尽管在Windows操作系统上调用#paint(Graphics g)
期间,您可能能够查询鼠标位置,但我在Mac OS上遇到了“锁定”问题。因此,请在鼠标侦听器中保存鼠标位置,并在绘制方法中使用已保存的位置。
问题出在我的情况下,我需要在没有任何鼠标的情况下获取鼠标位置。我正在制作一款使用鼠标指针作为瞄准敌人的游戏,并且向左或向右飞行会使整个图形g以相反的方式翻译,这意味着如果您按住鼠标但不移动它并瞄准通过向左或向右转动按键,x和y值不会更新。 –
翻译图形不会改变鼠标的位置。你需要应用[逆变换(https://docs.oracle.com/javase/7/docs/api/java/awt/geom/AffineTransform.html#inverseTransform%28java.awt.geom.Point2D,%20java .awt.geom.Point2D%29)到鼠标/屏幕坐标,将其转换为您的模型坐标系。 – AJNeufeld
我已经。瞄准系统适用于所有情况,除非玩家在保持光标瞄准一个点的同时进行瞄准(向左和向右移动)。这是因为虽然鼠标正在相对于屏幕移动,但没有检测到实际的动作(或拖动或点击),因此最初点击中记录的x值是最新的更新。我希望在程序过程中不断更新它,而不仅仅是当它被移动或拖动时。 –
您可以尝试MouseInfo.getPointerInfo()的getLocation()。 它将返回鼠标指针相对于屏幕的位置。 更多PointerInfo
示例代码:
PointerInfo relative = MouseInfo.getPointerInfo();
Point coord = relative.getLocation();
int x = (int) coord.getX();
int y = (int) coord.getY();
我知道,你说你找到你自己的方法,这一点,但只是提供一个解决方案作为一个答案。
有某种形式的Aimer
class
,这与服用屏幕上Point
并将其转换为游戏的坐标系统交易,并给予您MouseListener
只要鼠标移动到更新。这将始终保持鼠标当前屏幕上的Point
,但潜在的转换到您的游戏内坐标在别处处理。
事情是这样的:
public class AimingMouseListener extends MouseAdapter {
private final Aimer aimer;
public AimingMouseListener(Aimer aimer) {
super();
this.aimer = aimer;
}
@Override
public void mouseMoved(final MouseEvent e) {
aimer.setCurrentMousePoint(e.getPoint());
}
}
- 1. 如何从鼠标点击获得相对x和y位置
- 2. 随着鼠标不断更新的舍入位置修复
- 3. JPanel在益智游戏不更新
- 4. 如何在python 3中找到鼠标的x和y位置?
- 5. 如何设置SKCameraNode相对于节点的位置x和y?
- 6. 获取相对于元素的鼠标指针的x和y位置
- 7. 如何在每一帧得到相对的JPanel鼠标位置
- 8. 在3D游戏中的目标的X Yž位置C#X Y窗口关系
- 9. 如何使相对于鼠标位置的标签位置
- 10. 如何获得坐标相对于鼠标位置的位置?
- 11. 根据鼠标的位置对齐框的x,y位置
- 12. 如何使用changelistener监视鼠标位置x y的更改?
- 13. 基于鼠标的X和Y位置旋转矩形
- 14. 我如何获得Javascript Canvas以返回x和y鼠标位置?
- 15. 如何在页面上的任意位置点击鼠标X和Y位置?
- 16. Photoshop中鼠标位置的x和y坐标
- 17. 获取鼠标坐标不断,而鼠标移动onmousedown事件
- 18. 游戏场中的鼠标事件(NSTrackingArea)不起作用
- 19. 如何找到鼠标按钮'点击'位置x和y?
- 20. 如何随着时间不断创建对象? C++游戏
- 21. Kineticjs - 如何在更改大小后更新x和y位置
- 22. SharpDX如何让鼠标在游戏屏幕上的位置
- 23. 如何获取TWinControl的X,Y位置(相对于屏幕)
- 24. 相对于原点的鼠标位置
- 25. 鼠标不在游戏窗口之外更新
- 26. 如何处理从游戏中不断更新的数据库
- 27. JavaScript-将鼠标的X和Y位置存储在变量中,并在鼠标移动时不断更新它们
- 28. 在游戏重新居中前获取游标在游戏中的位置
- 29. 即使点击另一个控件,我怎样才能获得鼠标相对于窗体的X,Y位置?
- 30. 如何使相对股利绝对定位div在x溢价而不是y
肯定有这样做的方法(实现自己的'MouseListener'存储在'mouseMoved'事件给一个变量的位置,并提供一个访问);但我希望听到更多关于为什么需要不断更新的信息,因为这听起来不符合您的描述。 – user2478398
@ user2478398将它描绘成一个小精灵游戏,玩家总是处于中心位置,但当玩家走路时,玩家周围的一切都会移动。除了可以拍摄外,我的游戏看起来很相似子弹去鼠标。如果玩家决定将他的光标放在一个地方而不移动它,并使用箭头键拍摄,则目标系统不起作用,因为x和y坐标是初始点击时的旧坐标。 –