一个简单的问题–如果对象是.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);
    }
    //...
};

09-06 16:36