Обнаружение вертикального/горизонтального движения мыши с помощью java

Я пишу программу на java, в которой есть графические объекты, которые пользователь может выбирать, а затем вращать или растягивать в зависимости от движения мыши. Я близок к тому, чтобы приступить к работе, но проблема, с которой я столкнулся, заключается в том, чтобы выяснить, как настроить форму, чтобы она естественным образом работала с движениями мыши.

У меня есть MouseListener, настроенный примерно так:

private class MouseHandler extends MouseAdapter
{
    public void mousePressed(MouseEvent e)
    {
         currentClickPoint = e.getPoint();
    }
}

и MouseMotionListener настроил что-то вроде этого:

private class MouseMotionHandler extends MouseMotionAdapter
{
    public void mouseDragged(MouseEvent e)
    {
         objectRotateAngle = currentClickPoint.getY() - e.getY();
         objectWidth += currentClickPoint.getX() - e.getX();
    }
}

Это упрощенная версия, очевидно, но проблема в том, что я хочу, чтобы ширина увеличивалась при перемещении мыши вправо и уменьшалась при перемещении мыши влево, а также чтобы угол поворота увеличивался/уменьшался в зависимости от вертикального движения мыши. . Прямо сейчас ширина не начнет уменьшаться, пока вы не пройдете позицию X currentClickPoint влево и наоборот. Проблема с поворотом на основе движения мыши Y заключается в том, что каждый раз, когда вы начинаете перемещать мышь вверх для поворота, угол снова устанавливается на 0.

Программа должна плавно реагировать на изменение направления, не устанавливая ширину или угол в 0 в начале настройки. У кого-нибудь есть лучший способ определить направление движения мыши для этой цели?


person Polaris    schedule 28.07.2013    source источник


Ответы (1)


Я бы предложил сохранить исходное положение мыши (то есть его положение, когда пользователь впервые может изменить размер фигуры), а затем изменить ширину фигуры, либо напрямую добавив разницу между текущей позицией и исходной позицией, либо масштабируя это разницу, а затем добавить ее.

person Max Roncace    schedule 28.07.2013