Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Problème de keyrepeat  (Lu 7098 fois)

0 Membres et 1 Invité sur ce sujet

Negatio

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Problème de keyrepeat
« le: Mai 19, 2013, 06:23:42 pm »
Bonjour/bonsoir;

Je me trouve confronté a un problème assez handicapant. Lorsque j'appuie sur une touche mon "personnage" avance d'un pixel il se passe rien pendant environ une seconde puis mon personnage avance normalement.

Je ne peut pas encore poster mon code (je ne suit pas sur mon ordi). Mais je voudrait savoir si quelqu'un a déjà eu ce problème et a quoi ca peut être du. En attendant dites moi quelle-est la meilleur manière de vous faire acquérir mon code (étant assez gros et en plusieurs fichier).

Merci de votre participation ^^

kimci86

  • Full Member
  • ***
  • Messages: 128
    • Voir le profil
Re : Problème de keyrepeat
« Réponse #1 le: Mai 19, 2013, 06:42:02 pm »
Bonjour,
Au lieu d'utiliser les évènements Event::KeyPressed comme tu sembles le faire, utilise la fonction Keyborad::isKeyPressed.
Lorsque l'on garde une touche enfoncée, Event::KeyPressed est émis une fois puis, après un court instant, il est réémis en continu si la répétition automatique des touches est activée. Avec isKeyPressed, tu peux savoir à tout moment si une certaine touche est enfoncée.

Negatio

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Re : Problème de keyrepeat
« Réponse #2 le: Mai 19, 2013, 06:45:50 pm »
Merci de ta réponse mais je ne comprend pas vraiment. Event::KeyPressed sert juste a vérifier si l'evénement est 'une touche a été pressée' non? Comment voudrait tu que je teste quelle touche a eté pressé avec Event::KeyPressed? De toute façons j'utilise Keyborad::isKeyPressed.

kimci86

  • Full Member
  • ***
  • Messages: 128
    • Voir le profil
Re : Problème de keyrepeat
« Réponse #3 le: Mai 19, 2013, 06:54:31 pm »

Negatio

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Re : Problème de keyrepeat
« Réponse #4 le: Mai 19, 2013, 07:16:19 pm »
Citer
Je t'invite à lire le tutoriel.
Deja fait de nombreuses fois et je me répète j'utilise sf::Keyboard::isKeyPressed() et non sf::Event::KeyPressed() :)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème de keyrepeat
« Réponse #5 le: Mai 19, 2013, 08:20:52 pm »
Citer
En attendant dites moi quelle-est la meilleur manière de vous faire acquérir mon code (étant assez gros et en plusieurs fichier).
Puisque ton problème se situe au niveau de la fonction Keyboard::isKeyPressed, écris un main() tout simple qui déplace une forme simple en utilisant cette fonction. Pour le moment on se fiche un peu de tout ce qu'il y a d'autre dans ton gros code ;)
Et si ce code marche (ce qui sera sûrement le cas), alors là commence à voir quelles différences il y a entre ce code qui marche et ton code original qui ne marche pas. Et là si tu es rigoureux tu tomberas forcément sur le bug.
Laurent Gomila - SFML developer

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : Re : Problème de keyrepeat
« Réponse #6 le: Mai 19, 2013, 11:59:03 pm »
Citer
Je t'invite à lire le tutoriel.
Deja fait de nombreuses fois et je me répète j'utilise sf::Keyboard::isKeyPressed() et non sf::Event::KeyPressed() :)
Ton isKeyPressed, il est à l'intérieur de ta boucle d'évènement ? Si oui, c'est probable que c'est pas là que tu veux vraiment l'y mettre.

Negatio

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Re : Problème de keyrepeat
« Réponse #7 le: Mai 20, 2013, 11:51:41 am »
Citer
Puisque ton problème se situe au niveau de la fonction Keyboard::isKeyPressed, écris un main() tout simple qui déplace une forme simple en utilisant cette fonction. Pour le moment on se fiche un peu de tout ce qu'il y a d'autre dans ton gros code
Et si ce code marche (ce qui sera sûrement le cas), alors là commence à voir quelles différences il y a entre ce code qui marche et ton code original qui ne marche pas. Et là si tu es rigoureux tu tomberas forcément sur le bug.
Au début de mon projet j'avais tout mis dans le main et tout fonctionnait mais c'est depuis que séparais mon code en plusieurs classe que ca foire. Donc entre trouvais la différence entre presque rien et un code de plusieurs classe je vais un peu galérer mais bon.

Citer
Ton isKeyPressed, il est à l'intérieur de ta boucle d'évènement ? Si oui, c'est probable que c'est pas là que tu veux vraiment l'y mettre.
Non il est dans une fonction qui est appelé par certaine classe
bool EngineControl::isPressed(string keyString)
{
    if(Keyboard::isKeyPressed(keysConfig[keyString]))
    return true;

    else
    return false;
}
Bon je retourne essayer de trouver le caillou dans le bouillon.
Merci vous en tout cas :)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème de keyrepeat
« Réponse #8 le: Mai 20, 2013, 05:56:24 pm »
Citer
Donc entre trouvais la différence entre presque rien et un code de plusieurs classe je vais un peu galérer mais bon.
Ben... et nous tu crois qu'on ferait quoi pour trouver la cause de ton problème ? ;)
Les forums c'est pas magique, pour ce genre de problème, si tu ne passes pas un peu de temps à faire des tests poussés, il est probable que personne n'arrive à t'aider.
Laurent Gomila - SFML developer

TheNoob

  • Newbie
  • *
  • Messages: 31
    • Voir le profil
    • Anonym0us.fr
Re : Problème de keyrepeat
« Réponse #9 le: Mai 21, 2013, 12:05:02 am »
Lol c'est pas faux ça si y a une erreur dans ton code c'est pas aux autres de la chercher a ta place, surtout que si tu as écris le code, tu es probablement le plus apte à trouver rapidement d'où vient le problème.
Bonne continuation.
Vivement l'invention d'un debuggeur automatique!

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème de keyrepeat
« Réponse #10 le: Mai 21, 2013, 08:03:23 am »
Citer
Lol c'est pas faux ça si y a une erreur dans ton code c'est pas aux autres de la chercher a ta place
Si, quand même, sinon à quoi bon venir poster sur le forum ? Mais on peut le faire sur un code qui a déjà été réduit à son minimum, pas dans gros projet dont 99% du code est sans rapport avec l'erreur.
Laurent Gomila - SFML developer

TheNoob

  • Newbie
  • *
  • Messages: 31
    • Voir le profil
    • Anonym0us.fr
Re : Problème de keyrepeat
« Réponse #11 le: Mai 21, 2013, 01:28:19 pm »
Ce que je veux dire par la c'est que si son erreur n'est pas due à ses conaissances mais à une faute qu'il est autant apte à repérer qu'une autre personne, il n'y a pas de raison de demander de l'aide. Après c'est peut être pas le cas içi et dans ce cas je m'excuse.
Vivement l'invention d'un debuggeur automatique!

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème de keyrepeat
« Réponse #12 le: Mai 21, 2013, 01:33:09 pm »
Disons que la plupart des erreurs qui bloquent les débutants peuvent être trouvées en un rien de temps par nos yeux d'experts ;)

Mais, je le répète, il faut que je posteur prépare le terrain ; jeter un gros projet à la figure du forum ne l'aidera pas, bien au contraire.
Laurent Gomila - SFML developer

Negatio

  • Newbie
  • *
  • Messages: 11
    • Voir le profil
Re : Problème de keyrepeat
« Réponse #13 le: Mai 21, 2013, 05:43:41 pm »
Je suis désoler si j'ai pu paraître un peu abrupte mais je voulais juste savoir si mon problème était du a une "erreur courante", un bug ou si c’était réellement mon architecture qui posais problème.
Citer
Donc entre trouvais la différence entre presque rien et un code de plusieurs classe je vais un peu galérer mais bon.
Ben... et nous tu crois qu'on ferait quoi pour trouver la cause de ton problème ? ;)
Les forums c'est pas magique, pour ce genre de problème, si tu ne passes pas un peu de temps à faire des tests poussés, il est probable que personne n'arrive à t'aider.
Je ne voulait pas dire par là "j'ai flemme de chercher donc débrouiller-vous" je voulais dire que entre un code "normal" et mon ramassis de classe incohérentes il y'a beaucoup de differences. Mais maintenant que je sait que c'est pas mon utilisation des events qui est foireuse je vais pouvoir chercher une réponse par moi même. Je suis d'accord que nous somme dans un forum dédié a la SFML et donc que ce n'est pas l'endroit pour trouver LE problème qui n'a rien a voir avec la SFML. En tout cas merci pour ces réponses et je reviendrais si je comprend toujours pas mon(mes?) erreur(s?).
PS: Veuillez excuser mon orthographe, en relisant mes sujets je me suis aperçu que ca piquer un peu les yeux parfois.

EDIT:
Apres avoir fait un code minimal je m'aperçois que ca ne fonctionne toujours pas(même problème qu'avant) (ca doit vraiment venir de moi qui sait pas se servir de la sfml).
    RenderWindow m_window;
    m_window.create(sf::VideoMode(1920, 1080), "test 3", sf::Style::Fullscreen);
    m_window.setKeyRepeatEnabled(true);
    m_window.setFramerateLimit(50);
    m_window.setVerticalSyncEnabled(true);
    Texture m_texture;
    Sprite m_sprite;
    Image img;
    img.create(50, 50, Color::Blue);
    m_texture.loadFromImage(img);
    m_sprite.setTexture(m_texture);
    m_window.draw(m_sprite);
    Event m_event;
    while(m_window.isOpen())
    {
        while(m_window.pollEvent(m_event))
        {
            m_window.clear();
            m_window.draw(m_sprite);
            m_window.display();
            if(m_event.Closed)
            m_window.close();
            if(Keyboard::isKeyPressed(Keyboard::Escape))
            m_window.close();
            if(Keyboard::isKeyPressed(Keyboard::Down))
            {
                m_sprite.setPosition(m_sprite.getPosition().x, m_sprite.getPosition().y + 1);
            }
        }
    }
(du coup c'est un code vraiment minimal  ;D)
Je laisse ce code et son erreur qui doit être énorme sous vos yeux d'experts.
« Modifié: Mai 22, 2013, 07:23:29 pm par Negatio »

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : Problème de keyrepeat
« Réponse #14 le: Mai 22, 2013, 07:34:20 pm »
Wow.
Tu as TOUT mis dans la boucle d'évènement. Pas sûr que tu aies lu les tutoriels "de nombreuses fois", car même la façon dont tu check l'évènement Closed ressemble à rien. :o
« Modifié: Mai 22, 2013, 07:54:06 pm par G. »