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

Allegro Discussion :

[Gestion des events] trop d'event dans ma queue


Sujet :

Allegro

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 40
    Points : 32
    Points
    32
    Par défaut [Gestion des events] trop d'event dans ma queue
    Yop les gens,

    Je suis depuis peu sur Allegro 5 et j'aurais besoin de votre aide, j'ai un petit soucis au niveau des events, en fait ça marche bien... ça marche même trop bien :/
    C'est à dire qui lorsque j'appuie sur une touche je n'ai pas une event qui ce rajoute dans ma queue mais autant que le temps que je reste appuyé, sauf que c'est beaucoup trop rapide (à peu près un event/seconde). Si vous connaitriez un moyen de faire quelque chose du genre un event par pression ou du moins ralentir le nombre d'ajout dans la queue ce serait pas mal !

    Merci d'avance pour votre aide !

    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
     
    ALLEGRO_EVENT ev;
     
    while (al_get_next_event(this->_event, &ev))
      {
        if(ev.type == ALLEGRO_EVENT_KEY_DOWN)
          {
            if (ev.keyboard.keycode == ALLEGRO_KEY_ESCAPE)
              return (0);
            if (ev.keyboard.keycode == ALLEGRO_KEY_LEFT)
              set_new_dir(-1);
            else if (ev.keyboard.keycode == ALLEGRO_KEY_RIGHT)
              set_new_dir(1);
          }
        if (ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE)
            return (0);
      }

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    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 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Bonjour,

    Si vous voulez à tout prix éviter la répétition de l’évènement pour une même touche, vous pouvez utiliser une valeur booléenne indiquer que la touche est appuyée et donc, ne plus la prendre en compte.
    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.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    J'ai pas trouvé de fonction qui puisse m'aider donc j'ai utiliser un trick pour ce cas là (je vide ma queue d'event [avec al_flush_event_queue] lorsque je suis au maximum d'event par boucle). Dommage mais bon.

    Merci quand même pour votre aide !

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


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    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 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Généralement, on maintient une table qui contient l'état des touches. Après, je dois dire, je n'ai rien trouvé non plus dans la documentation.
    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.

  5. #5
    Membre averti Avatar de yetimothee
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Salut,
    normalement, l’événement ALLEGRO_KEY_DOWN n'a lieu que lors de la pression sur la touche, et une seule fois...

    A quoi ressemble ta boucle principale ? La fonction de démarrage de ton moteur ?

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

Discussions similaires

  1. [MySQL] Gestion des données d'un utilisateur dans une application
    Par Boujoute dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 05/06/2012, 15h48
  2. Réponses: 0
    Dernier message: 23/10/2009, 12h46
  3. Gestion des connexions à SQL Server 2005 dans un Webservice
    Par pete666 dans le forum Services Web
    Réponses: 3
    Dernier message: 10/09/2009, 09h43
  4. Réponses: 2
    Dernier message: 18/03/2009, 23h32
  5. Gestion des touches [TAB] et [ENTER] dans un TextBox : son d'alerte
    Par Miles Raymond dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/02/2009, 12h34

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