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

SDL Discussion :

Probleme gestion evenements touche


Sujet :

SDL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 15
    Par défaut Probleme gestion evenements touche
    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
    int tmp=0;
            string entree;
            const char* chaine;
            while(!tmp)
            {
                SDL_PollEvent(&event);
                if(event.type==SDL_KEYUP)
                {
                     if(event.key.keysym.sym==SDLK_RETURN) tmp=1;
                     else { entree+=SDL_GetKeyName(event.key.keysym.sym);
                     chaine=entree.c_str();
                     SDL_BlitSurface(TTF_RenderText_Solid(Font, chaine, TextColor), NULL, pseudo, NULL);
                     SDL_Flip(pseudo);
                     }
                     }                       
                }
    Tout d'abord merci de vous interesser à mon problème, voilà je tente de saisir le pseudo de l'utilisateur en ajoutant à un string la touche pressée et en affichant le string à chaque nouvelle touche.
    Le problème étant que si j'appuis sur le "a", une grande série de "a" s'afficher sans pour autant que je laisse la touche enfoncée.
    Merci de me répondre.

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    J'avais un problème dans ce genre, une répétition sans fin du dernier événement, j'ai donc trouvé une solution, sans doute pas la meilleure, va savoir mais au moins ca marche pour mon cas.

    J'ai simplement changé le type d'événement en tant que SDL_USEREVENT c'est tout, comme par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    event.type = SDL_USEREVENT;
    Je ne sais pas si c'est correcte de faire ainsi mais en attendant mieux, ca m'a sorti de ce problème
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par Franck.H
    J'avais un problème dans ce genre, une répétition sans fin du dernier événement, j'ai donc trouvé une solution, sans doute pas la meilleure, va savoir mais au moins ca marche pour mon cas.

    J'ai simplement changé le type d'événement en tant que SDL_USEREVENT c'est tout, comme par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    event.type = SDL_USEREVENT;
    Je ne sais pas si c'est correcte de faire ainsi mais en attendant mieux, ca m'a sorti de ce problème
    NON !

    C'est encore le même problème à propos de SDL_PollEvent, digne d'une question de FAQ d'ailleurs !

    Le problème se situe ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                SDL_PollEvent(&event);
                if(event.type==SDL_KEYUP)
    Il faut tester le retour de SDL_PollEvent, ou l'encapsuler par un while :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
              while(SDL_PollEvent(&event))  {
                if(event.type==SDL_KEYUP) {
                     ....
                  }
              }
    Jc

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Nan mais Jc, j'ai bien dit que c'était une solution temporaire (du moins sous-entendu ) ... Le problème que j'avais, c'était au niveau de la gestion des click de souris, même après un click, un seul hé bin j'avais tout de même une répétition incéssante des clicks .... comment résoudre autrement ce problème ?

    Même en faisant (ce que je fait toujours d'ailleurs):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while(SDL_PollEvent(&event))  {
                if(event.type==SDL_KEYUP) {
                     ....
                  }
              }
    cela ne change rien à mon problème.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par Franck.H
    Nan mais Jc, j'ai bien dit que c'était une solution temporaire (du moins sous-entendu ) ...
    Bon, alors cette fois-ci, ca va

    Le problème que j'avais, c'était au niveau de la gestion des click de souris, même après un click, un seul hé bin j'avais tout de même une répétition incéssante des clicks .... comment résoudre autrement ce problème ?
    Un bug probablement dans ton code, non ? Je serais curieux de le voir dans les deux cas

    Mais pour le posteur originel, c'est clairement pas la bonne solution, il faut toujours tester le retour de SDL_PollEvent ou SDL_WaitEvent.

    Jc

  6. #6
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 15
    Par défaut
    Merci à vous tous d'avoir répondu à mon problème.

  7. #7
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 15
    Par défaut
    Merci beaucoup pour cette réponse, je teste de suite, je me demande où je dois le mettre.
    C'est un test ou c'est une affectation toute simpe ??
    Merci encore.

  8. #8
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par mrpignol
    Merci beaucoup pour cette réponse, je teste de suite, je me demande où je dois le mettre.
    C'est un test ou c'est une affectation toute simpe ??
    Merci encore.
    Bin c'est une simple affectation, le mieux est de le mettre juste après
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

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

Discussions similaires

  1. [TP]Problème dans la gestion des touches d'un tetris
    Par Guile0 dans le forum Turbo Pascal
    Réponses: 18
    Dernier message: 31/01/2005, 22h40
  2. Probleme gestion camera
    Par Fry dans le forum DirectX
    Réponses: 3
    Dernier message: 03/12/2004, 11h41
  3. Gestion evenement souris
    Par Bugmaster dans le forum Agents de placement/Fenêtres
    Réponses: 15
    Dernier message: 30/07/2004, 08h40
  4. [DirectInput] Gestion des touches en mode fenêtré
    Par Harry_polin dans le forum DirectX
    Réponses: 8
    Dernier message: 19/03/2003, 17h50
  5. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04

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