Java 基于鼠标位置的移动-不必要的偏移
我正在做乒乓球游戏,我无法让玩家和AI球拍正确移动。这种解释可能有点混乱 首先是运动员的桨。我将为AI提出一个单独的问题,以保持这篇文章的长度在合理范围内Java 基于鼠标位置的移动-不必要的偏移,java,Java,我正在做乒乓球游戏,我无法让玩家和AI球拍正确移动。这种解释可能有点混乱 首先是运动员的桨。我将为AI提出一个单独的问题,以保持这篇文章的长度在合理范围内 高度和宽度定义了桨的大小,图像是桨的纹理 double mouseY = MouseInfo.getPointerInfo().getLocation().getY(); if (mouseY < getHeight() - HEIGHT) { paddleLeft.setLocation(2 *
高度
和宽度
定义了桨的大小,图像
是桨的纹理
double mouseY = MouseInfo.getPointerInfo().getLocation().getY();
if (mouseY < getHeight() - HEIGHT) {
paddleLeft.setLocation(2 * WIDTH, mouseY);
image.setLocation(2 * WIDTH, mouseY);
image.sendToFront();
} else {
// stop paddle from sliding off screen
paddleLeft.setLocation(2 * WIDTH, getHeight() - HEIGHT);
image.setLocation(2 * WIDTH, getHeight() - HEIGHT);
image.sendToFront();
但我的光标仍然并没有和挡板对齐,我只能在屏幕截图2所示的范围内移动挡板:(光标位于顶部窗口边框上)
从屏幕鼠标坐标中减去帧的X和Y屏幕位置,以获得帧中的偏移量,或为帧本身添加一个适当的值,这将在窗口客户端坐标中提供鼠标位置 不管怎样,侦听器方法通常更好,因为它意味着您也可以,例如,在不影响鼠标代码的情况下,向窗口添加其他组件;它使所有内容在游戏框架中保持独立。您不应滥用
MouseInfo
来实现类似的功能。正如在回答中已经提到的:使用合适的鼠标侦听器
,问题无论如何都会消失代码>意味着在游戏窗口内,而getY()代码>整个电脑都死机了,所以我交换了它,它就工作了。
public void mouseMoved(MouseEvent e) {
mouseY=e.getYOnScreen();
}