我正在尝试在我的游戏中添加一个鼠标外观功能,人们可以点击一个空格,然后角色会转到那个空间。
我有一个MouseListener,它为我提供了与JFrame坐标相关的鼠标X和Y.
这不起作用,因为当玩家在世界中移动时,玩家的X和Y与屏幕上的X和Y不同。
如何获取Canvas上绘制的与鼠标在JFrame上的X和Y相关的内容的X和Y?
答案 0 :(得分:3)
如果您在世界中有一个(x,y)位置,而另一个(x,y)坐标是Frame,那么只需检查当前相机在世界中的查看位置并抵消差异。
让蓝框成为您的世界边界,黑框成为您的框架屏幕。现在在x
位置有一个游戏单元。
在帧中,根据帧的坐标为(x: 200, y: 300)
。
如果您想获取世界位置,只需在世界中添加相机的当前位置,即:(200 + 1000, 300 + 1100)
。
因此,您的游戏角色的世界位置将位于(x: 1200, y: 1400)
。
要反过来,只需颠倒过程即可。
答案 1 :(得分:1)
如何获取Canvas上绘制的与鼠标在JFrame上的X和Y相关的内容的X和Y?
您需要将该点转换为相对于另一个组件。
查看SwingUtilities
课程。您可以使用convertPoint(...)
方法将点转换为相对于您希望的任何组件。
另外,不要使用Canvas类。这与AWT一起使用。使用Swing时,你应该使用JPanel进行自定义绘画。