2013-04-12 4 views
0

Я программирую вещи с SDL 1.2 на Ubuntu 12.04. SDL, похоже, «отбрасывает» первое событие, указанное в цикле событий. Например, если бы я должен был проверить выход из игры через поле «x», и я нажимаю на поле «x» в своем приложении, ничего не происходит. Однако при втором щелчке игра завершается. Мой игровой цикл:SDL "dropping" начальное событие?

void game_run() 
{ 
    int RUNNING = 1; 

    while(RUNNING == 1) 
    { 
     while(SDL_PollEvent(&scr.event)) 
     { 
      switch(scr.event.type) 
      { 
       case SDL_QUIT: 
       RUNNING = 0; 
       break; 

       case SDL_KEYDOWN: 
       switch(scr.event.key.keysym.sym) 
       { 
        case SDLK_ESCAPE: 
        RUNNING = 0; 
        break; 

        default: 
        break; 
       } 
       break; 

       default: 
       break; 
      } 
     } 

     // draw here 

     SDL_Flip(scr.buffer); 
    } 
} 

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать!

ответ

2

Изменить ваш

case SDL_QUIT: 
RUNNING = 0; 
break; 

в

case SDL_QUIT: 
exit(0) ; 
break; 

Программа должна выйти немедленно, подтверждая, что цикл обработки событий работает нормально и проблема находится где-то в вашем коде вы не показали. Моя догадка game_run() снова называется где-то, а потому, что int RUNNING = 1; задано в начале каждого game_run(), введите еще один цикл while(RUNNING == 1).

+0

Пригвожден. Спасибо огромное! : D – Lemmons

Смежные вопросы