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

SFML Discussion :

Encore de la gestion d'événements !


Sujet :

SFML

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Points : 13
    Points
    13
    Par défaut Encore de la gestion d'événements !
    Bonjour

    J'ai un peu de mal avec la gestion des événements.

    Voici un bout de code qui ne sert qu'à illustrer mon propos.

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
     
    bool ok_a = false;
    bool ok_b = false;
     
        int z = 0;
        int i = 0;
     
        while (App.IsOpened())
        {
     
            sf::Event Event;
            while (i==0)
            {
                App.GetEvent(Event);
     
                if (Event.Type == sf::Event::Closed)
                    App.Close();
     
     
                if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
                    App.Close();
     
                 if ( (Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::A))
                 {
                     ok_a = true;
                 }
     
                 if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::B))
                 {
                     ok_b = true;
                 }
     
                 if ((Event.Type == sf::Event::KeyReleased) || z>100000)
                 {
                     break;
                 }
     
                z++;
            }
     
            z=0;
     
            if (ok_a == true && ok_b == false)
            {
                cerr <<"a"<<endl;
            }
     
           if (ok_a == false && ok_b == true)
            {
                cerr <<"b"<<endl;
            }
     
           if (ok_a == true && ok_b == true)
            {
                cerr <<"c"<<endl;
            }
           ok_a = false;
     
           ok_b = false;
    }

    Quand j'appuie sur la lettre A pas de soucis cela fait ce que je demande, pareil pour B

    Par contre si je clique sur A et B, j'ai bien le c qui s'affiche mais et c'est là ou le bât blesse, si je reste les touches appuyées, j'obtiendrais un joli petit a.
    Et c'est bien cela que je ne comprends pas.
    Dans mon esprit soit il doit voir les deux événements (les 2 touches) comme au premier appuie, soit il n'en voit aucun.

    Quelqu'un peut-il me dire exactement ce qui se passe dans la récupération d'événement et comment cela est traité.


    Bon ben en attendant je fais me faire un p'tit café

    merci.

  2. #2
    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,

    Tout d'abord, ce n'est pas lié à SFML. On aurait la même chose en SDL.
    Que se passe t-il ?

    Lorsque l'on appuie sur une touche, un évènement est envoyé. Ok

    Bon, maintenant le cas deux touches:
    Touche1
    Touche2
    Ok, les deux sont repérés.
    Le cas deux touches, mais avec répétition (reste appuyé)
    Touche2
    Touche1
    Touche1
    Touche1
    Touche1
    Touche1
    Le système répète la dernière qui a été appuyé (et uniquement celle là). Du coup, dans votre cas, la Touche2 disparait.

    Mais comment règle t-on se problème ?

    Il faut utilisé des drapeaux, permettant de dire quels sont les touches appuyés. Si une touche est appuyé, on active le drapeau. Si elle est relâché, on désactive le drapeau. Mais si elle n'est pas relâché, même si nous n'avons pas l'évènement, on sait qu'elle est appuyée, grâce aux drapeaux.

    Soit:
    - Une touche est appuyé, je mets le booléan à true
    - Une touche est relâché, je mets le booléan correspondant à false

    Si je veux savoir si une touche est appuyé, je regarde mes booléans.
    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
    Expert éminent sénior

    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 : 43
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Et en fait on crée un tableau de 256 caractères et on utilise le code ascii comme entrée au tableau.

    Jc

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Après quelques cafés
    merci pour les réponses, au fait.


    Si je dis que mon problème: est que je n'ai pas pris en compte le fonctionnement matériel du clavier et du pc; j'ai tout bon ?



    a+

  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
    Citation Envoyé par Pifpafboum Voir le message
    Si je dis que mon problème: est que je n'ai pas pris en compte le fonctionnement matériel du clavier et du pc; j'ai tout bon ?
    Je ne comprends pas ce que vous entendez par "fonctionnement matériel".
    (Le problème (du moins, l'effet) que j'ai décrit peut venir soit du système d'exploitation, soit du matériel. Je n'y ai jamais trop réfléchi)
    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.

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Hello

    Le problème (du moins, l'effet) que j'ai décrit peut venir soit du système d'exploitation, soit du matériel. Je n'y ai jamais trop réfléchi)
    C'est ce que je voulais dire. Donc je peux mettre résolu et merci pour les réponses

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

Discussions similaires

  1. Gestion des évènements Netscape 7.0
    Par RATHQUEBER dans le forum Autres langages pour le Web
    Réponses: 6
    Dernier message: 19/12/2005, 16h26
  2. Problème avec la gestion des événements
    Par CynO dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/10/2005, 10h07
  3. [JTable] gestion des événements
    Par soulhouf dans le forum Composants
    Réponses: 4
    Dernier message: 19/08/2005, 13h21
  4. Gestion des évènements lors d'un clique sur une image.
    Par yoghisan dans le forum Débuter
    Réponses: 7
    Dernier message: 23/06/2005, 19h04
  5. Gestion d'événements hors tables
    Par Quentin dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 11/02/2005, 00h09

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