2011-08-08 105 views
1

简单的问题 - 为什么如果它是.move()onMouseMoved()内的对象不会移动?我正在尝试将Breakout作为iTunes U的Stanford 106A练习的一部分,并且出于某种原因,我无法使用桨来跟踪鼠标。我是一个Java noob,所以我确定它非常简单。有人可以看看这段代码吗?为什么我的对象不能在MouseMoved上移动?

/** 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是一个实例变量,在这种情况下适当的,因为它的“价值”不改变(桨总是桨),但如果我只是把它定义为一个新GRectsetupBoard我在MouseMoved()方法中出错。

回答

4

你的类有mouseMoved()方法需要实现接口MouseMotionListener,并添加运动侦听器。此外,事件处理程序是mouseMoved()而不是MouseMoved()。所以,例如:

+0

你说得对大写,但AFAIK addMouseListeners()同时添加MouseListener和MouseMotionListener。如果您想编辑,我会将您的答案标记为正确。不敢相信我犯了这样一个愚蠢的错误。 – jefflovejapan

+1

@jefflovejapan - 无需编辑,addMouseListeners是您自定义(框架?)代码中的一种方法,只有您知道:-)答案在所有部分都是正确的。 – kleopatra

+0

@kleopatra - 够公平! – jefflovejapan

相关问题