Почему мой объект не перемещается на MouseMoved? - PullRequest
1 голос
/ 08 августа 2011

Простой вопрос - почему объект не двигается, если это объект .move() внутри onMouseMoved()?Я пытаюсь написать Breakout как часть упражнений Stanford 106A на iTunes U и по какой-то причине не могу заставить весло отслеживать мышь.Я java noob, так что я уверен, что это что-то действительно простое.Может кто-нибудь взглянуть на этот код?

/** Runs the Breakout program. */
    public void run() {
        setupBoard();
        addMouseListeners();
    }

    /** Provides the initial GCanvas and blocks for the game */
    private void setupBoard(){
        this.setSize(APPLICATION_WIDTH,APPLICATION_HEIGHT);
        addBricks();
        paddle = new GRect(PADDLE_WIDTH, PADDLE_HEIGHT);
        add(paddle, WIDTH/2-PADDLE_WIDTH/2,HEIGHT-PADDLE_Y_OFFSET);

    }

    public void MouseMoved(MouseEvent e){
        paddle.move(e.getX()-paddle.getX(), 0);
        }

    private GRect paddle;
}

Я не уверен, что в этом случае уместно иметь paddle в качестве переменной экземпляра, поскольку ее "значение" не изменяется (paddle - это всегда paddle), но если я просто определю его как новый GRect в setupBoard, я получу ошибку в методе MouseMoved().

1 Ответ

4 голосов
/ 08 августа 2011

Ваш класс, имеющий метод mouseMoved(), должен реализовать интерфейс MouseMotionListener и добавить прослушиватель движения.Кроме того, обработчик события mouseMoved() не MouseMoved().Так, например:

public class Game extends JPanel implements MouseMotionListener {
    public void run() {
        addMouseMotionListener(this);
        //...        
    }
    public void mouseMoved(MouseEvent e) {                  
        paddle.move(e.getX()-paddle.getX(), 0); 
    } 
    //...
};  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...