2013-04-24 3 views
0

MouseListener для моей игры, которая управляет съемкой, не реагирует на использование отдельной мыши, но не при использовании встроенной мыши на моем ноутбуке. В моем классе игрока метод mouseClicked выглядит следующим образом:MouseListener не отвечает

public void mouseClicked(MouseEvent e){ 
    if(e.getButton() == MouseEvent.BUTTON1){ 
     fire(); 
    } 
} 

и в отдельном классе, который расширяет JPanel я реализовать MouseListener так:

addMouseListener(new MouseAdapter(){ 
     public void mouseClicked(MouseEvent e){ 
      player.mouseClicked(e); 
     } 
    }); 

Я всегда использовал мой встроенный в мышь для кодирования и тестируя игру, и каждый раз, когда я нажимал левую кнопку мыши, игрок начал стрелять, но теперь, когда я хотел попытаться сыграть в игру с помощью мыши, я заметил, что игрок не начинал стрелять каждый раз, когда я нажимал левую кнопку мыши, но более 80% времени.

+0

Тот факт, что прерывистый указывает нечто неправильно с самой мыши. Я попытался бы установить либо контрольную точку отладки, либо оператор журнала отладки в прослушивателе мыши и попытаться выяснить, что точка останова попала. – nikkatsa

ответ

1

Я заметил, что игрок не начинал стрелять каждый раз, когда я нажимал левую кнопку мыши, но больше как 80% времени.

Попробуйте использовать mousePressed() вместо mouseClicked(). Событие mouseClicked генерируется только тогда, когда событие mousePressed() и mouseReleased() генерируется в том же месте. Возможно, вы перемещаете мышь на пиксель или два, чтобы событие mouseClicked не генерировалось.

if(e.getButton() == MouseEvent.BUTTON1) 

Кроме того, вместо указанной выше с помощью следующей который легче читать:

if (SwingUtilities.isLeftMouseButton(e))