我有一个处理所有鼠标事件的类,这样很容易检查是否单击了鼠标按钮,但是它似乎仅在添加以下行时起作用:system.out.println(mouseManager.getMouseX());
。
MouseManager类:
public class MouseManager implements MouseListener,MouseMotionListener {
private boolean leftpressed,rightpressed;
private int mouseX,mouseY;
public MouseManager() {
}
public boolean isLeftpressed() {
return leftpressed;
}
public boolean isRightpressed() {
return rightpressed;
}
public int getMouseX() {
return mouseX;
}
public int getMouseY() {
return mouseY;
}
@Override
public void mouseMoved(MouseEvent e) {
mouseX = e.getX();
mouseY = e.getY();
}
@Override
public void mousepressed(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1) {
leftpressed = true;
}
else if (e.getButton() == MouseEvent.BUTTON3) {
rightpressed = true;
}
}
}
如您所见,MouseManager类非常简单,但是可在其他类中调用它来简化鼠标输入。 但是在Visuals类中(这不是一个适当的名称,它是主要的类),出现了问题。
public void Update() {
if (mouseManager.isLeftpressed()) {
Vector2 posClicked = GetRoundedmousePos();
int index = GetPosInArray(posClicked);
System.out.println(Grid.cells.get(index).cellType.toString());
if (Grid.cells.get(index).cellType == Cell.CellType.GROUND) {
Grid.cells.get(index).cellType = Cell.CellType.SAND;
repaint();
}
}
System.out.println(mouseManager.getMouseX());
}
如您所见,我添加了prinln
以确保其正常工作。
注意:
- 我只显示Update方法,因为整个脚本太长了
- Update方法被称为每一帧
- mouseManager在上面用以下行声明:
private static MouseManager mouseManager = new MouseManager();
在更新底部没有System.out.println(mouseManager.getMouseX());
的情况下,mouseManager.isLeftpressed()
不起作用。那么如何解决呢?
AND 这可能与上面的错误有关,但是即使使用println()
功能,mouseManager似乎也不总是检测到鼠标按下。