2012-01-20 12 views
8

Recentemente ho lavorato a un gioco 2D in java e attualmente sto cercando di far funzionare correttamente il sistema di gestione degli eventi. Stavo cercando di ottenere un clic del mouse per avviare un'animazione, e ha funzionato fino a quando ho provato a spostare il mouse mentre si fa clic. A questo punto non succede nulla. Sto usando entrambe le classi mouselistener e mousemotionlistener, e il problema persiste ancora. Ecco il codice da Main:Gli eventi del mouse Java ignorati quando il mouse si muove?

public class ML extends MouseAdapter{ 
    public void mouseClicked(MouseEvent m){ 
     if(m.getButton()==MouseEvent.BUTTON1) 
     guns.playOnce(); 
    } 
    public void mouseReleased(MouseEvent m){ 
     if(m.getButton()==MouseEvent.BUTTON1); 
    } 

Si chiama la classe animatore di giocare la serie di immagini una volta e stop. L'animatore funzionava perfettamente prima di includere gli eventi del mouse. Non riesco a capire perché non funzionerebbe durante il movimento del mouse se non c'è un'azione specifica da eseguire durante il movimento del mouse. (Se c'è una soluzione ovvia, mi scuso, ho avviato java non troppo tempo fa.)

risposta

6

In Java, un clic del mouse registra solo se il mouse viene premuto e rilasciato senza muovere il mouse. Questo è difficile per la maggior parte degli utenti, quindi molti elementi dell'interfaccia utente (come i pulsanti) reagiscono alla pressione del mouse e rilasciano eventi e ignorano il "clic".

Per un pulsante, tuttavia, un'opzione migliore è aggiungere un ActionListener ad esso. Quindi il pulsante stesso ascolterà gli eventi del mouse e deciderà quando è stato fatto clic.

+0

Grazie! Il consiglio di fare clic mi salverà un po 'di frustrazione più tardi. – Ryan

+2

@trashgod: Beh, in realtà "ButtonModel" tiene traccia solo dello stato - è il "ButtonUI" che ascolta gli eventi del mouse e aggiorna il modello. –

Problemi correlati