2015-10-25 1 views
0

Bonjour les amis,
J'ai créé un jeu dont vous avez besoin pour appuyer sur une balle et la balle augmente sa taille. Maintenant, mon problème est que quand j'appelle onTouchEvent et que j'appelle la fonction increaseRadius() sa mise à jour ma valeur quand le doigt bouge sur l'écran mais si je vais mettre mon doigt sans bouger cela mettra à jour la valeur une fois. Je veux que la valeur soit mise à jour même si le joueur a mis son doigt dans la même coordonnée (Like while while loop of update). L'onTouchListener ne fonctionne parfaitement que si le doigt bouge, sinon il ne fonctionne qu'une seule fois.Valeur de mise à jour OnTouchEvent Émettre Android

Voici le code « court »:

public boolean onTouchEvent(MotionEvent event) 
{ 
    if(userball.getRadius()<screenWidth/4) 
    { 
     userball.increaseRadius(); 
    } 
} 
public void increaseRadius() 
{ 
    this.radius+=screenWidth*0.002; 
} 

Ce sont la fonction sans les choses qui n'avez pas lié à la question. COMMENT JE LE CHANGERAIS QUE LA BALLE VA METTRE À JOUR ET AUGMENTE SA TAILLE MÊME SI LE JOUEUR NE DÉPLACE PAS SON DOIGT?

Je veux que la valeur sera mise à jour tout le temps que le doigt du joueur est sur l'écran (comme boucle while) sur la même coordonnée.

+0

Hé compagnon, thx pour le répondre rapidement, je veux que la valeur sera mise à jour tout le temps que le doigt du joueur est sur l'écran (comme en boucle) mais si le joueur met son doigt sur l'écran et ne modifie aucune coordonnée, la valeur est mise à jour une fois. Je ne pense pas que le MotionEvent.ACTION_ * est le problème. –

+0

Ah, chéri. Ma faute. Je pensais que vous vouliez dire que ce n'était pas mis à jour sur 'ACTION_DOWN'. –

Répondre

1

Utilisez l'instruction if pour vérifier si le joueur ne fait que son/son doigt:

if (event.getAction() == MotionEvent.ACTION_DOWN) { 

} 

De même, si vous voulez écouter les événements glisser écrire votre instruction if comme ceci:

if (event.getAction() == MotionEvent.ACTION_MOVE) { 

} 

Pour que le processus se poursuive tant que le doigt de l'utilisateur se touche, vous pouvez démarrer un thread comme dans l'exemple suivant:

if (event.getAction() == MotionEvent.ACTION_DOWN) { 
    IncreaseSizeThread increaseSizeThread = new IncreaseSizeThread(); 
} 

if (event.getAction() == MotionEvent.ACTION_UP) { 
    increaseSizeThread.stop(); 
    //A better way would be to change a variable that gets the while loop in  
    //the thread going to false e.g. keepGoing = false; 

} 

Et le contenu du fil pourrait être:

class IncreaseSizeThread extends Thread { 

    public IncreaseSizeThread() { 
    } 

    void run(){ 
     while(keepGoing){ 
      //Size++; 
     } 

    } 
} 
+0

Merci de m'avoir sauvé! TRAVAIL! –