Bonjour,
Savez vous comment prendre les coordonnées d'un touché qui reste enfoncé ?
J'arrive a prendre les coordonnées avec onTouchEvent mais il se contente de prendre les coordonnées sans indiquer si le touché reste ou pas.
Merci
Bonjour,
Savez vous comment prendre les coordonnées d'un touché qui reste enfoncé ?
J'arrive a prendre les coordonnées avec onTouchEvent mais il se contente de prendre les coordonnées sans indiquer si le touché reste ou pas.
Merci
tu peux le savoir en regardant son type.
En gros tu va avoir un ACTION_DOWN sans avoir ni le ACTION_CANCEL ni le up ACTION_UP ni le move ACTION_MOVE.
Là tu auras le bouton préssé qui ne bouge pas .
Faut que tu fasses une machines à état en gros.
Responsable Android de Developpez.com (Twitter et Facebook)
Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.
Merci pour ta réponse...mais dsl, je ne vois pas trop comment faire.
J'utilise une fonction "onTouchEvent" sur ma SurfaceView qui prend l’événement dès que l’écran est touché :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 @Override public boolean onTouchEvent(MotionEvent event) { gameSystem.toutch(event.getX(), event.getY()); return super.onTouchEvent(event); }
s'il s'agit d'un ACTION_MOVE, ( ce que je recherche, c'est a dire, que la touche reste enfoncé et bouge sur l'écrant ), comment recevoir bien l'information et l'utiliser ?
Salut,
là j'ai pas assez de temps pour te faire l'algo. Mais en gros tu intercepte le TOuch Event et tu as une variable volatile ou pas qui te permet de connaitre l'état.
Donc quand tu as l'event ACTION_DOWN tu passe en préssé en état et tu reswitchera que quand tu auras l'event ACTION_UP en état non préssé. Du coup a tout moment tu pourra savoir son état .
Sachant que tu lances cet algo sur la vue que tu as besoin d'espionné.
TU peux regarder ce tuto pour t'en inspirer.
http://cyrilmottier.com/2009/05/06/l...s-touchevents/
Responsable Android de Developpez.com (Twitter et Facebook)
Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.
Ok, oui je vois l'idée.
Merci je vais étudier tout ça.
Juste une question, comment peut on faire pour intercepter le touch event ?
Enfin plutôt récupérer un toutch event depuis un objet ?
Alors j'ai essayé d'implémenter le ACTION_MOVE, mais sans succès.
En revanche, le ACTION_DOWN, fonctionne bien :
Avez vous une idée de pourquoi le ACTION_DOWN fonctionne et pas le ACTION_MOVE alors que les paramètres sont les mêmes ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public boolean onTouchEvent(MotionEvent event) { if ( event.getActionMasked() == MotionEvent.ACTION_MOVE){ gameSystem.view.move(10,0); } if ( event.getActionMasked() == MotionEvent.ACTION_DOWN){ gameSystem.toutch(event.getX(), event.getY()); gameSystem.view.move(10,0); } return super.onTouchEvent(event); }
Merci.
Déjà, je pense que c'est le getAction qui t'interesse... pas le getActionMasked
D'autre part les if sont exclusifs, pas besoin de faire le second si le premier est réussi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 if (evt.getAction() == ACTION_DOWN) { inMoving = true; startX = evt.getX(); startY = evt.getY(); // signaler à l'utilisateur qu'il va bouger le truc (couleur, whatever) } else if (evt.getAction() == ACTION_UP) { inMoving = false; // signaler à l'utilisateur qu'il ne bougera plus le truc (couleur, whatever) endX = evt.getX(); endY = evt.getY(); //finalisation du move } else if (inMoving && evt.getAction() == ACTION_MOVE) { endX = evt.getX(); endY = evt.getY(); // move en cours }
N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
Et surtout
Merci, Nicroman.
j'ai essayé avec gerAction, mais cela ne marche toujours pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 @Override public boolean onTouchEvent(MotionEvent event) { if ( event.getAction() == MotionEvent.ACTION_MOVE){ gameSystem.view.move(10,0); gameSystem.request.add("rightArrow"); } else if ( event.getAction() == MotionEvent.ACTION_DOWN){ gameSystem.request.add("rightArrow"); gameSystem.toutch(event.getX(), event.getY()); } return super.onTouchEvent(event); }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager