尝试用高架摄像头制作简单的 RPG 游戏。当我去实现MouseMotionListener时,这不是我第一次使用MouseMotionListener时,似乎mousedMoved MouseEvent只被调用一次,然后简单似乎不再起作用。我已经坚持了一段时间,我所有的研究都把我带入了死胡同。
我确实有一个完整的游戏循环,带有刻度和渲染方法。但是正如您在下面的代码中看到的那样,在鼠标处理类中(代码的底部)它返回一个数字,每次鼠标移动时都会增加一(在刻度方法中,我将数字的值打印到控制台) 并且它还应该将鼠标 x 和 y 坐标打印到控制台。当您运行该程序时,该数字等于 1,并且它只打印一次鼠标坐标。一个例子是控制台输出看起来像这样:
124 82
1
或者,如果我的鼠标在程序启动时没有悬停在 JFrame 上,它将如下所示:
0
这是我的游戏循环的初始化方法:
private void init() {
display = new Display("Operation Blood Bath: Alpha 0_5.0", 800, 600);
game = new Game();
Assets.init();
}
这是我在 init 方法中调用的显示类:
public class Display {
private JFrame frame;
private Canvas canvas;
public Display(String title, int width, int height) {
frame = new JFrame(title);
frame.setSize(width, height);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
canvas = new Canvas();
canvas.setPreferredSize(new Dimension(width, height));
canvas.setMaximumSize(new Dimension(width, height));
canvas.setMinimumSize(new Dimension(width, height));
canvas.setFocusable(false);
frame.add(canvas);
frame.addMouseMotionListener(new MouseMotionHandling());
frame.pack();
}
public Canvas getCanvas() {
return canvas;
}
public JFrame getFrame() {
return frame;
}
}
打勾方法:
private void tick() {
game.tick();
System.out.println(MouseMotionHandling.HELLO());
}
这是在显示类中调用的鼠标处理类:
public class MouseMotionHandling implements MouseMotionListener {
private static int number = 0;
@Override
public void mouseDragged(MouseEvent arg0) {
}
@Override
public void mouseMoved(MouseEvent arg0) {
System.out.println(arg0.getX() + " " + arg0.getY());
number++;
}
public static int HELLO () {
return number;
}
}
我要去哪里工作?