Java - 为什么我的运动算法有夸张的运动?

Java - why is my movement algorithm having exaggerated movements?

我正在尝试为可以单击和拖动的 swing 组件实现拖动算法。但是,看起来我的动作方向是正确的,但是夸张的很。例如,一点点鼠标移动都会导致形状发生非常不成比例的移动。

这是我确定运动的代码:

xStartyStart是第一次点击鼠标开始拖动的坐标)

该组件有一个 move(int deltaX, int delatY) 方法可以做到这一点。线组件的示例移动方法如下所示:

@Override
public void move(int dx, int dy) {
    this.x1 += dx;
    this.y1 += dy;
    this.x2 += dx;
    this.y2 += dy;
}

move方法是这样调用的,其中e是鼠标拖动事件:

currentShape.move(e.getX() - (int) xStart, e.getY() - (int) yStart);

您希望 dx dy 值等于您收到的最后一次鼠标事件的光标移动变化,而不是最初单击形状位置的变化。

我建议制作一个 keyframeXkeyframeY 变量来存储您最后一次鼠标事件 xy 值以进行比较。