2010-04-01 9 views
1

Je travaille sur les tutoriels SDL à http://lazyfoo.net/SDL_tutorials/index.php et je suis coincé sur le tutoriel 8 où je travaille avec des touches.SDL ne détecte pas les touches fléchées

J'utilise le code suivant: le cas par défaut

//Our Main application loop 
while(!quit){ 
    if(SDL_PollEvent(&curEvents)){ 
     if(curEvents.type == SDL_QUIT){ 
      quit = true; 
     } 

     //If a key was pressed 
     if(curEvents.type == SDL_KEYDOWN) 
     { 
      //Set the proper message surface 
      switch(curEvents.key.keysym.sym) 
      { 
       case SDLK_UP: 
        message = upMessage; 
        break; 
       case SDLK_DOWN: 
        message = downMessage; 
        break; 
       case SDLK_LEFT: 
        message = leftMessage; 
        break; 
       case SDLK_RIGHT: 
        message = rightMessage; break; 
       default: 
        message = TTF_RenderText_Solid(font, "Unknown Key", textColor); 
        break; 
      } 
     } 
    } 

    if(message != NULL) 
    { 
     //Apply the background to the screen 
     applySurface(0, 0, background, screen); 

     //Apply the message centered on the screen 
     applySurface((SCREEN_WIDTH - message->w)/2, (SCREEN_HEIGHT - message->h)/2, message, screen); 

     //Null the surface pointer 
     message = NULL; 
    } 

    //Update the screen 
    if(SDL_Flip(screen) == -1) 
    { 
     return 1; 
    } 
} 

Où fonctionne très bien, est atteint, pour tout, mais en appuyant sur les touches fléchées. Je me demandais si quelqu'un pouvait repérer ce que je faisais de mal.

Répondre

1

J'ai découvert l'erreur qui n'était pas dans le code affiché ci-dessus. L'erreur était que pour les messages de la touche fléchée, j'ai utilisé RenderText avant l'ouverture de la police. Au moment où le bloc de code affiché a été atteint, la police a déjà été ouverte et c'est la raison pour laquelle ce message s'affiche.

Questions connexes