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 :

SDL_EVENT de répétition de touche manquant


Sujet :

SDL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 83
    Points : 56
    Points
    56
    Par défaut SDL_EVENT de répétition de touche manquant
    Bonjour j'ai une petite quesion, j'utilise la sdl2 depuis peu et j'ai remarqué que quand on enfonce une touche on a un SDL_KEYDOWN qui s'ajoute à la queue et si on ne relâche pas, on a plus d'ajout de keydowns dans la queue pendant environs 300ms et ensuite elles arrivent.
    Donc j'aimerais savoir s'il y a un moyen de réactiver en quelque sorte la mise en queue des keydown juste après l'enfoncement de la touche.
    Merci d'avance.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Non et tu ne le veux pas. Ce que tu constates c'est ce que le système fait pour traquer une répétition de touche enfoncée. Si tu veux avoir l'état d'une touche pour savoir si elle est enfoncée c'est pas un évènement qu'il te faut traquer mais récupérer son état.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 83
    Points : 56
    Points
    56
    Par défaut
    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
     const Uint8* state= SDL_GetKeyboardState(NULL);
      while(continuer==1)
        {
              SDL_WaitEvent(&event);
              SDL_Delay(50);
     
    	  if(state[SDL_SCANCODE_ESCAPE])
    	    continuer=0;
    	  if(state[SDL_SCANCODE_UP])
    	    position.y-= 10;
    	  if(state[SDL_SCANCODE_DOWN])
    	    position.y+=10;
     
    	  SDL_RenderClear(renderer);
    	  SDL_RenderCopy(renderer, texture, NULL, &position);
    	  SDL_RenderPresent(renderer);
        }
    Par exemple ici avec ce code, le problème se pose encore en revanche si j'actualise la queue avec un pumpevent dans la boucle, ça marche.
    Et donc si je veux pas faire trops de pumpevent il faut que le pump event soit conditionné par un test dans la queue.
    Mais j'ai surement pas compris ce que tu voulais dire.

    ps: etbsi j'utilise pas le waitevent ou pollevent c'est justement car s'il n'y a rien dans la queue ils ne l'actualisent pas et donc j'ai pas la fonction de mes touches pendant les 300 ms de délaie.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Faudrait commencer par (re)voir les bases http://alexandre-laurent.developpez....boucle-de-jeu/
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Si vous faites un SDL_GetKeyboardState() ne faites pas WaitEvent, mais un PumpEvent().
    Ici, vous pouvez trouver un exemple de comment cela se passe : http://alexandre-laurent.developpez....ents/#LIII-C-4
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. [Pygame] Répétition des touches (keys)
    Par Loenix dans le forum Programmation multimédia/Jeux
    Réponses: 1
    Dernier message: 25/08/2009, 16h48
  2. Delai de répétition des touches clavier
    Par Risike dans le forum Windows Forms
    Réponses: 3
    Dernier message: 22/05/2008, 15h26
  3. Répétition de touche non voulue
    Par sibork dans le forum SDL
    Réponses: 2
    Dernier message: 05/03/2008, 22h37
  4. Problème de répétition de touche clavier ^^¨¨
    Par daniel50171 dans le forum Windows 2000/Me/98/95
    Réponses: 3
    Dernier message: 14/09/2007, 01h53
  5. [KeyAdapter]délai de répétition de touche
    Par ikarus dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 13/02/2006, 21h05

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