Domanda

Ok, quindi nel creare un gioco nel mio tempo libero, sono stato completamente bloccato quando provo a codificare il seguente scenario:

Voglio catturare eventi di rubinetto (TouchEvent.ACTION_DOWN), e poi a intervalli di 500 ms, voglio verificare se lo schermo è ancora premuto e ripetere la stessa azione, AD Infinitum.

Quindi, ho iniziato con:

switch (myTouchHandler.getAction()) {
  case (TouchEvent.ACTION_DOWN):
  case (TouchEvent.ACTION_MOVE):
    if (inputIntervalTooSoon()) return true;
    //do the magic i intend to do....
 }

....

private boolean inputIntervalTooSoon() {
        final long now = System.currentTimeMillis();
        if ((now - lastTouchEventTime) < 500) return false;
        lastTouchEventTime = now;
        return true;

E questo produce l'effetto che aspetterà i 500 ms, ma non inizierà immediatamente a rilevare se il mio dito è ancora giù. Lo riprenderà di nuovo se muovo leggermente il dito e poi torno a dormiente.

Se non includo la funzione di intervallo, la mia azione spara costantemente. Qualsiasi idea su come implementare meglio questo sarebbe molto apprezzato.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top