2017-08-02 3 views
1

J'ai un problème avec mon code sur libGDX dans Android Studio. J'essaye d'avoir un objet pour effectuer une action pendant que j'appuie sur l'écran. Si je laisse aller, l'action précédente devrait être abandonnée et une seconde devrait commencer. Lorsque j'appuie à nouveau sur l'écran, la deuxième action devrait s'arrêter à nouveau et commencer la première fois pendant que je maintiens le contact.LibGDX: Action lorsque vous appuyez sur l'écran tactile et action lorsque l'écran tactile est relâché

Je n'ai malheureusement aucune idée de comment je devrais faire cela et l'Internet il n'y a malheureusement pas non plus d'information exacte à ce sujet. Cela signifie également que je n'ai pas de code, que je peux montrer comme une position d'aide.

Je serais très heureux si quelqu'un a une solution, ou peut m'aider. :)

Répondre

0

Vous pouvez utiliser cette façon:

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; 
    } 
}); 

Laissez-moi savoir si cela aide ..

+0

Merci pour votre aide, mais la solution par Abhishek Aryan fonctionne aussi! – Eron

1

J'utiliser un écouteur d'entrée qui a une valeur booléenne appelée toucher. Ensuite, dans l'événement touchDown, définissez le toucher sur true. De nouveau dans l'écouteur d'entrée dans l'événement touchUp, définissez le toucher sur 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 

} 

Dans votre application créer cette MyController et le définir comme inputListsner avec:

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

Maintenant, vous pouvez détecter lorsque l'utilisateur est touchante et faire ce que l'action dont vous avez besoin avec:

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

Merci pour votre aide, mais la solution par Abhishek Aryan fonctionne aussi! – Eron

+0

Ceci est le meilleur moyen –

0

Vous pouvez utiliser ainsi la méthode de rendu:

if(Gdx.input.isTouched()){ 

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

} 

ou

  1. Vous pouvez passer InputProcessor classe implémentée à l'intérieur Gdx.input.setInputProcessor(..)

  2. après, puis passer outre touchDown(..) et touchUp(...) méthode de cette interface,

  3. choisir drapeau ou une autre technique pour vos besoins.
+1

J'ai essayé cela et cela fonctionne, merci beaucoup! – Eron