如何创建一个通过鼠标拖动更新的计数器?

时间:2016-07-13 19:41:51

标签: java

假设我有一个圆圈,如果用户沿着圆圈的路径顺时针拖动鼠标,则计数器会增加,如果他逆时针拖动鼠标,它会减小。在Java中实现这个的最佳方法是什么?我想是需要触发器,所以程序知道用户何时顺时针或逆时针拖动,对吧?不寻找代码示例,只是帮助理论,所以我可以从正确的方法开始。

1 个答案:

答案 0 :(得分:0)

由于您可能有权访问该圆圈,因此请获取其中心点坐标。 然后获取鼠标的坐标。之后,您计算向量与x-axis之间的角度。

首先将圆点设置为假想坐标系的中心,然后将鼠标坐标移动到此系统。之后,在新的鼠标坐标上应用atan2。结果是所需的角度。

Point center = ...;
Point mouse = ...;
Point shiftedMouse = new Point(mouse.x - center.x, mouse.y - center.y);
double angle = Math.atan2(shiftedMouse.y, shiftedMouse.x);

此时你可能需要将角度的结果转换为度数或类似的东西,如果你愿意的话。您可以查看Wikipedia#atan2 当然,如果您知道它的含义,您也可以将其保留为(-pi, pi]格式并使用它。

现在您可以跟踪此角度的变化情况。如果它增加,则鼠标逆时针移动;如果它减少,然后顺时针等等(或者反过来,只是尝试它)。在359° 然后来到之后,请注意这一点。