Partage
  • Partager sur Facebook
  • Partager sur Twitter

Timer

Faire marche arrêt sur un timer

    14 juin 2007 à 19:45:25

    Bonjour,

    Je suis actuellement en train de lire le cour de matéo sur les timers (je l'avais laissé de côté jusqu'à maintenant, en me concentrant sur le c++) et j'essaye de me familiarisé avec la technique dans le but de faire une classe conssacré à la gestion des timers.

    Je me demandais s'il était possible (le tuto de matéo n'en mentionne pas ) de faire comme marche arrêt sur un timers.

    J'ai déjà essayer de faire ça:
    case SDLK_UP:
                    SDL_RemoveTimer(timer);
                    break;

                    case SDLK_DOWN:
                    timer= SDL_AddTimer(30, bouger, &position);
                    break;

    Au début tout va bien , la surface bouge vers la droite avec la fonction bouger.
    Quand j'appuie sur la flêche du haut tout va bien, ma surface s'arrête.
    Mais quand j'appuie sur la flêche du bas, ma surface par à toute allure vers la droite.

    Pour info voici la fonction bouger:
    Uint32 bouger(Uint32 intervalle, void *parametre)
    {
        SDL_Rect *position=(SDL_Rect*)parametre;
        position->x++;

        return intervalle;
    }


    Merci de vos futurs conseilles.
    • Partager sur Facebook
    • Partager sur Twitter
      14 juin 2007 à 23:16:07

      d'apres ce que je comprend,
      SDL_RemoveTimer(timer);

      ne fait qu'arreter le timer sans le supprimer, ce qui fait qu'un nouvel appel à
      timer= SDL_AddTimer(30, bouger, &position);

      Ajoute un timer, et relance l'ancien en plus du nouveau..
      Je me trompe peut-etre, mais si j'ai raison va voir dans la doc si y a pas une fonction qui relance un timer sans devoir le recréer avec SDL_AddTimer()..
      Je dis peut-etre une grosse betise, corrigez moi!
      • Partager sur Facebook
      • Partager sur Twitter
        15 juin 2007 à 10:48:54

        Je crois que tu as raison.
        Je suis allé cherché la doc de la SDL, et Je suis tombé sur ça


        http://www.libsdl.org/cgi/docwiki.cgi/SDL_5fSetTimer

        Je crois que ça correspond à la fonction qui permet de rappeler le timer.
        Mais je ne suis pas du tout familiarisé avec la doc et je ne comprend pas grand chose de comment faut utilisé cette fonction. o_O
        • Partager sur Facebook
        • Partager sur Twitter
          15 juin 2007 à 11:44:22

          je pense pas que ce soit ca, moi je comprend que c'est une "vieille" fonction qui permet le meme chose que celles que tu utilise..

          maintenant, j'ai rien de mieux.. faut demander aux specialistes.. ;)

          EDIT: pour faire une pause voici un exemple:
          http://www.megastep.org/SDL/progsdl5.html (encadré 1)
          mais SDL_Delay rend le processeur à d'autres processus il me semble donc ca pause p-e probleme, et la solution est p-e l'usage de thread..
          • Partager sur Facebook
          • Partager sur Twitter

          Timer

          × 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