0

クラスロボットを使用して、配列内の1つのボタンから別のボタンへのマウスの動きをアニメーション化しようとしています。私が使用した2つの方法は次のとおりです。

public void optimusprime(int row, int column, JButton current) throws InterruptedException {
        Point p;
        Point p2;
        double x;
        double y;
        double x2;
        double y2;
        double conx = 0;
        double m;
        double b;
        double cony;
        p = current.getLocationOnScreen();

        x = (int)( p.getX() + 30.5);
        y = (int)( p.getY() + 30.5);

        optimus((int) x, (int) y);




        p2 = mesa[row][column].getLocationOnScreen();
        x2 = (int) (p2.getX() + 30.5);
        y2 = (int) (p2.getY() + 30.5);

        m = (y2 - y) / (x2 - x);
        b = y - (m * x);
        while (conx != x2) {

            conx = x;
            cony = (m * conx) + b;
            optimus((int) conx, (int) cony);
            conx++;
            Thread.sleep(500);
        }

    }

    public void optimus(int x, int y) {
        try {


            Robot robot = new Robot();
            robot.mouseMove(x, y);
        } catch (AWTException e) {
        }
    }

ここで私を助けることができるか、少なくとも推奨事項を与えることができますか?. 無限ループで在庫を取得しました(PCをシャットダウンする必要がありました)が、まったく機能しませんでした。私はJavaが初めてで、いくつかのばかげた間違いかもしれません。

4

1 に答える 1

1

問題は、すべての計算を double として行っているため、conx実際にはあなたと等しくないことです。x2それは、それconxよりわずかに小さいものx2からわずかに大きいものx2になり、2つの間を行ったり来たりするか、現在の軌道に沿って移動し続けることを意味します. ロジックを追加して、ターゲットが十分に近づいたらしきい値を設定するか、ターゲットを超えたらすぐに停止することで、ターゲットをまたがないようにすることができます。

于 2013-07-02T01:52:18.337 に答える