У меня есть класс, который обрабатывает все события мыши, поэтому очень легко проверить, нажата ли кнопка мыши, но, кажется, он работает только при добавлении этой строки: 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
кубедитесь, что это работает.
ПРИМЕЧАНИЕ:
- Я показываю только метод обновления, потому что весь сценарий слишком длинный
- Метод обновления вызывается каждый кадр
- mouseManager объявлен выше с этой строкой:
private static MouseManager mouseManager = new MouseManager();
Без System.out.println(mouseManager.getMouseX());
внизу Update, mouseManager.isLeftPressed()
не работает. Так как это исправить?
И это может быть связано с вышеуказанной ошибкой, но даже с функцией println()
mouseManager, похоже, не всегда обнаруживает нажатия мыши.