IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Touch event enfoncé


Sujet :

Android

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Points : 136
    Points
    136
    Par défaut Touch event enfoncé
    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

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    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.

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Points : 136
    Points
    136
    Par défaut
    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 ?

  4. #4
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    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.

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Points : 136
    Points
    136
    Par défaut
    Ok, oui je vois l'idée.

    Merci je vais étudier tout ça.

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Points : 136
    Points
    136
    Par défaut
    Juste une question, comment peut on faire pour intercepter le touch event ?
    Enfin plutôt récupérer un toutch event depuis un objet ?

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Points : 136
    Points
    136
    Par défaut
    Alors j'ai essayé d'implémenter le ACTION_MOVE, mais sans succès.
    En revanche, le ACTION_DOWN, fonctionne bien :

    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);
        }
    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 ?
    Merci.

  8. #8
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    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

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Points : 136
    Points
    136
    Par défaut
    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);
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PC portable : touche maintenue enfoncée
    Par adilou1981 dans le forum Ordinateurs
    Réponses: 1
    Dernier message: 10/07/2009, 09h50
  2. Maintenir la touche alt enfoncée.
    Par Akatsuki dans le forum Delphi
    Réponses: 0
    Dernier message: 25/07/2007, 01h15
  3. lancement mdb et touche secrète enfoncée (comme maj)
    Par zermatt dans le forum Sécurité
    Réponses: 6
    Dernier message: 17/01/2007, 13h09
  4. Réponses: 6
    Dernier message: 15/06/2006, 22h02
  5. [KeyEvent] plusieurs touches simultanées enfoncées
    Par gege2mars dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 07/01/2004, 11h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo