Partage
  • Partager sur Facebook
  • Partager sur Twitter

[OpenGL] onKeyboard

Implémentation de la camera freefly

Sujet résolu
    4 novembre 2006 à 13:27:18

    Bonjour,

    Je suis actuellement le cours de Kayl, arrivé à l'implémentation de la caméra "freefly" je tente de bien tout comprendre en essayant après de tout refaire moi même sans aide. Mais voilà, je tombe sur ceci:


    void FreeFlyCamera::OnKeyboard(const SDL_KeyboardEvent & event)
    {
        for (KeyStates::iterator it = _keystates.begin();it != _keystates.end();
                it++)
        {
            if (event.keysym.sym == it->first)
            {
                it->second = (event.type == SDL_KEYDOWN);
                break;
            }
        }
    }


    Je ne comprends pas vraiment ce bout de code.
    "iterator it" = ?
    "it->first" = ?
    "it->second" = ?
    • Partager sur Facebook
    • Partager sur Twitter
      4 novembre 2006 à 13:32:20

      J'allais poser EXACTEMENT la meme question :p
      • Partager sur Facebook
      • Partager sur Twitter
        4 novembre 2006 à 15:26:57

        J'ai compris à présent ce qu'est un iterateur. Mais je ne comprends pas comment ce bout de code ci:


        if (event.keysym.sym == it->first)
            {
                it->second = (event.type == SDL_KEYDOWN);
                break;
            }


        Peut signifer ce que Kayl dit dans ses commentaires càd:

        it->second = (event.type == SDL_KEYDOWN);

        = est-ce que la touche responsable de l'événement est celle du keystate ?


        it->second = (event.type == SDL_KEYDOWN);

        = //true si enfoncé, false si relaché


        break;

        = //la touche responsable de l'événement a été utilisée, on quitte le for
        • Partager sur Facebook
        • Partager sur Twitter
          4 novembre 2006 à 15:33:10

          tu remontes dans la hiérarchie :
          1) it est un iterator de KeyStates
          2) KeyStates est défini ainsi :
          typedef std::map<SDLKey,bool> KeyStates;

          3) ->first et ->second sont peut être les "élements" de map<T,K>, ou first est la clé (T) et second la valeur (K)
          • Partager sur Facebook
          • Partager sur Twitter
            4 novembre 2006 à 15:34:58

            Merci beaucoup minirop, à présent, j'ai tout à fait compris.
            • Partager sur Facebook
            • Partager sur Twitter

            [OpenGL] onKeyboard

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown