2017-08-02 3 views
1

Ich habe ein Problem mit meinem Code bei libGDX in Android Studio. Ich versuche ein Objekt auszuführen, während ich auf den Bildschirm drücke. Wenn ich loslasse, sollte die vorherige Aktion abgebrochen werden und eine Sekunde sollte beginnen. Wenn ich erneut auf dem Bildschirm drücke, sollte die zweite Aktion erneut anhalten und die erste starten, während ich die Taste gedrückt halte.LibGDX: Aktion, wenn Touchscreen gedrückt wird und Aktion, wenn Touchscreen freigegeben wird

Ich habe leider keine Ahnung wie ich das machen soll und im Internet gibt es leider auch keine genauen Informationen dazu. Das bedeutet auch, dass ich keinen Code habe, den ich als Hilfestellung zeigen kann.

Ich würde mich sehr freuen, wenn jemand eine Lösung hat oder mir helfen kann. :)

Antwort

0

können Sie auf diese Weise verwenden:

view.setOnTouchListener(new View.OnTouchListener() {   
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     switch(event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       // PRESSED 
       return true; // if you want to handle the touch event 
      case MotionEvent.ACTION_UP: 
       // RELEASED 
       return true; // if you want to handle the touch event 
     } 
     return false; 
    } 
}); 

Lassen Sie mich wissen, ob das hilft ..

+0

Danke für Ihre Hilfe, aber die Lösung von Abhishek Aryan funktioniert auch! – Eron

1

ich einen Eingang Hörer verwenden würde, die einen Booleschen Wert rührend genannt hat. Dann im touchDown Event das Berührende auf True setzen. Setzen Sie erneut im Eingabe-Listener imEvent die Berührung auf false.

public class MyController implements InputProcessor { 
    @Override 
    public boolean touchUp(int screenX, int screenY, int pointer, int button) { 
     touching = false; 
    } 

    @Override 
    public boolean touchDown(int screenX, int screenY, int pointer, int button) { 
     touching = true; 
    } 
    //.. more methods etc 

} 

In Anwendung dieses MyController erstellen und sie als inputListsner mit:

controller = new MyController(); 
Gdx.input.setInputProcessor(controller); 

Jetzt können Sie erkennen, wenn der Benutzer zu berühren und tun, was immer Aktion, die Sie brauchen, um mit:

if(controller.touching){ 
    //user is touching do touching action 
}else{ 
    // user isn't touching do the non touchin action 
} 
+0

Danke für deine Hilfe, aber die Lösung von Abhishek Aryan funktioniert auch! – Eron

+0

Das ist besser Weg –

0

Sie können auf diese Weise innerhalb der Rendermethode verwenden:

if(Gdx.input.isTouched()){ 

    //whether the screen is currently touched. 
}else{ 

} 

oder

  1. Sie können InputProcessor implementiert Klasse innerhalb Gdx.input.setInputProcessor(..)

  2. passieren, nachdem dann touchDown(..) und touchUp(...) Methode dieser Schnittstelle außer Kraft setzen,

  3. wählen Flagge oder eine andere Technik für Ihre Anforderung.
+1

Ich habe es versucht und es funktioniert, vielen Dank! – Eron

Verwandte Themen