简单的问题 - 如果对象在.move()
内是onMouseMoved()
的对象,为什么不会移动?我试图将Breakout写成iTunes U上的斯坦福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
是否适合作为实例变量,因为它的“值”不会改变(paddle始终是paddle),但如果我只是将它定义为GRect
中的新setupBoard
我在MouseMoved()
方法中收到错误。
答案 0 :(得分:4)
具有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);
}
//...
};