我遇到了一个问题,无论我研究类和父类(super class)的 API 多久,我都无法弄清楚。
假设我想设计一种游戏,其中鼠标运动控制用于反弹球的 block 的运动,然后球会破坏多色砖 block 。
具体如何让方 block “听”鼠标? 下面的代码是我试图达到预期结果的代码。
/** Breakout Program*/
public class Breakout extends GraphicsProgram implements MouseMotionListener {
...
/** The Paddle Itself */
private GRect paddle = new GRect(0, HEIGHT-PADDLEBOTTOM_OFFSET, PADDLEWIDTH, PADDLEHEIGHT);
...
/** Run the Breakout program. */
public void run() {
paddle.setFillColor(Color.BLACK);
paddle.setFilled(true);
add(paddle);
paddle.addMouseListener(this);
...
}
/** Move the horizontal middle of the paddle to the x-coordinate of the mouse position -
* -but keep the paddle completely on the board. */
public void mouseMoved(MouseEvent e) {
GPoint p= new GPoint(e.getPoint());
double x = p.getX();
paddle.setLocation(x, HEIGHT-PADDLEBOTTOM_OFFSET);
}
}
任何关于我为什么/做错了什么的澄清都会有所帮助,谢谢。
最佳答案
您的类已全部设置为用作鼠标监听器——您只需告诉某个组件向您发送 MouseEvents。为此,您需要实现您已经完成的 MouseMotionListener,所以您已经完成了大部分工作。
剩下要做的就是在 JFrame、JDialog 或您正在使用的任何窗口上调用方法 addMouseMotionListener(this)
。
在未来,可能值得设置一个单独的类来充当监听器,只是为了让您的代码保持直截了当;最常见的解决方案称为匿名内部类,您可能需要谷歌一下。但是随着最后期限的临近,您所拥有的一切都会正常工作。
关于java - MouseMotion 传感器方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2726170/