2013-07-28 3 views
0

Я пишу программу в 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-позицию текущегоClickPoint, идущую влево и наоборот. Проблема с поворотом на основе движения мыши Y заключается в том, что каждый раз, когда вы начинаете перемещать мышь до поворота, угол устанавливается на 0.

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

ответ

0

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

+0

спасибо mproncace – Polaris

+0

@Polaris Абсолютно. – caseif

Смежные вопросы