一个简单的问题–如果对象是.move()
中的onMouseMoved()
对象,为什么不移动?我正在尝试将Breakout编写为iTunes U上的Stanford 106A练习的一部分,由于某种原因,我无法使用拨片来跟踪鼠标。我是一个Java新手,所以我确定这真的很简单。有人可以看一下这段代码吗?
/** 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
作为实例变量是否合适,因为它的“值”不会改变(桨始终是桨),但是如果我只是将其定义为新的GRect
setupBoard
我在MouseMoved()
方法中遇到错误。 最佳答案
具有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);
}
//...
};