2013-07-14 8 views
6

Sto cercando di ottenere quando il mouse è stato premuto, non quando si preme il mouse. Voglio dire che uso un codice in un ciclo e se rilevo se il mouse viene premuto il codice eseguirà molto tempo, ma voglio eseguire il codice solo una volta, quando il mouse ha appena cliccato.Il mouse Libgdx è stato appena cliccato

Questo è il mio codice:

if (Gdx.input.isButtonPressed(Input.Buttons.LEFT)){ 

      //Some stuff 
} 

risposta

9

Vedere http://code.google.com/p/libgdx/wiki/InputEvent - è necessario per gestire gli eventi in ingresso invece del polling, estendendo InputProcessor e passando il processore di input personalizzato per Gdx.input.setInputProcessor().

EDIT:

public class MyInputProcessor implements InputProcessor { 
    @Override 
    public boolean touchDown (int x, int y, int pointer, int button) { 
     if (button == Input.Buttons.LEFT) { 
      // Some stuff 
      return true;  
     } 
     return false; 
    } 
} 

E dovunque si desidera utilizzare che:

MyInputProcessor inputProcessor = new MyInputProcessor(); 
Gdx.input.setInputProcessor(inputProcessor); 

Se è più facile da usare questo schema:

class AwesomeGameClass { 
    public void init() { 
     Gdx.input.setInputProcessor(new InputProcessor() { 
      @Override 
      public boolean TouchDown(int x, int y, int pointer, int button) { 
       if (button == Input.Buttons.LEFT) { 
        onMouseDown(); 
        return true; 
       } 
       return false 
      } 

      ... the other implementations for InputProcessor go here, if you're using Eclipse or Intellij they'll add them in automatically ... 
     }); 
    } 

    private void onMouseDown() { 
    } 
} 
+0

Mi potete dare maggiori dettagli su quale funzione dovrei usare? in InputEvent, non vedo dove sia la funzione di cui ho bisogno. – LeSam

+0

Ho bisogno di controllare quando il mouse è stato premuto, il che significa che anche se il mouse viene premuto per un lungo periodo, il codice verrà eseguito solo UNA VOLTA, quando il mouse è appena cliccato – LeSam

+0

Sì, InputProcessor lo farà per te. Modifica la risposta per fornire maggiori dettagli presto. –

11

È possibile utilizzare Gdx.input.justTouched(), che è vero nel primo frame su cui è stato fatto clic sul mouse. O, come gli altri stati di risposta, è possibile utilizzare un InputProcessor (o InputAdapter) e gestire l'evento touchDown:

Gdx.input.setInputProcessor(new InputAdapter() { 
    public boolean touchDown(int screenX, int screenY, int pointer, int button) { 
     if (button == Buttons.LEFT) { 
      // do something 
     } 
    } 
}); 
Problemi correlati