Я делаю игру в java, и я добавил вход для мыши. Вот мой код.Java - при нажатии мыши цикл tick() вызывает более одного действия
public class MouseInput implements MouseListener, MouseMotionListener {
public static boolean leftPressed;
public static boolean rightPressed;
public MouseInput(){
}
public void tick(){
if(leftPressed){
System.out.println("left pressed");
}
}
@Override
public void mousePressed(MouseEvent e) {
if(e.getButton() == MouseEvent.BUTTON1){
leftPressed = true;
}else if(e.getButton() == MouseEvent.BUTTON3){
rightPressed = true;
}
}
@Override
public void mouseReleased(MouseEvent e) {
if(e.getButton() == MouseEvent.BUTTON1)
leftPressed = false;
else if(e.getButton() == MouseEvent.BUTTON3)
rightPressed = false;
}
Я удалил весь лишний код, который не участвует в этом вопросе, такой как геттеры, сеттеры и абстрактные методы.
Когда я запускаю это и я нажимаю то, что я вижу
left pressed
left pressed
left pressed
left pressed
left pressed
left pressed
несколько раз. Это потому, что он находится внутри метода тика, который обновляется 60 раз в секунду. Что я могу изменить в mousePressed и mouseReleased методы только сделать это один
left pressed
Спасибо большое
Основываясь на вашем примере нет никакой корреляции между методами обработчика событий мышей и 'tick' методой. Откуда он называется? – hotzst
и какова будет цель метода 'tick()'? –
Вы оставили некоторые важные детали из своего вопроса, в том числе, как упоминает выше @TimothyTruckle, цель метода тика, а также больше информации о вашем графическом интерфейсе и его текущем наблюдаемом и желательном поведении. Пожалуйста, помогите нам, заполнив пробелы в наших знаниях. –