Java - 为什么我的运动算法有夸张的运动?
Java - why is my movement algorithm having exaggerated movements?
我正在尝试为可以单击和拖动的 swing 组件实现拖动算法。但是,看起来我的动作方向是正确的,但是夸张的很。例如,一点点鼠标移动都会导致形状发生非常不成比例的移动。
这是我确定运动的代码:
(xStart
和yStart
是第一次点击鼠标开始拖动的坐标)
该组件有一个 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
值等于您收到的最后一次鼠标事件的光标移动变化,而不是最初单击形状位置的变化。
我建议制作一个 keyframeX
和 keyframeY
变量来存储您最后一次鼠标事件 x
和 y
值以进行比较。
我正在尝试为可以单击和拖动的 swing 组件实现拖动算法。但是,看起来我的动作方向是正确的,但是夸张的很。例如,一点点鼠标移动都会导致形状发生非常不成比例的移动。
这是我确定运动的代码:
(xStart
和yStart
是第一次点击鼠标开始拖动的坐标)
该组件有一个 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
值等于您收到的最后一次鼠标事件的光标移动变化,而不是最初单击形状位置的变化。
我建议制作一个 keyframeX
和 keyframeY
变量来存储您最后一次鼠标事件 x
和 y
值以进行比较。