Simple question – why wouldn’t an object move if it’s the object of .move() inside onMouseMoved()? I’m trying to write Breakout as part of the Stanford 106A exercises on iTunes U and for some reason I can’t get the paddle to track the mouse. I’m a java noob, so I’m sure it’s something really simple. Could someone please take a look at this code?
/** 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;
}
I’m not sure if having paddle be an instance variable is appropriate in this case, since its “value” doesn’t change (the paddle’s always the paddle), but if I just define it as a new GRect within setupBoard I get an error in the MouseMoved() method.
Your class that has the
mouseMoved()method needs to implement the interfaceMouseMotionListener, and add the motion listener. Moreover, the event handler ismouseMoved()notMouseMoved(). So, e.g.: