2013-04-12 1 views
0

우분투 12.04에서 SDL 1.2로 프로그래밍하고 있습니다. SDL은 이벤트 루프에 지정된 첫 번째 이벤트를 "드롭"하는 것으로 보입니다. 예를 들어, "x"상자를 통해 게임을 종료했는지 확인하고 응용 프로그램에서 "x"상자를 클릭하면 아무 일도 일어나지 않습니다. 그러나 두 번째 클릭시 게임이 종료됩니다. 내 게임 루프 :SDL이 초기 이벤트를 "삭제"합니까?

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); 
    } 
} 

더 많은 정보가 필요하면 알려 주시기 바랍니다. 이 프로그램은 이벤트 루프가 잘 작동하고 문제가 당신이 표시되지 않은 코드 어딘가에 것을 확인한 즉시 종료해야 당신의

case SDL_QUIT: 
RUNNING = 0; 
break; 

case SDL_QUIT: 
exit(0) ; 
break; 

답변

2
는 변경

. 내 생각 엔 game_run()이 어딘가에 다시 호출되며 game_run() 시작 부분에 int RUNNING = 1;이 설정되어 있기 때문에 다른 while(RUNNING == 1) 루프를 입력하십시오.

+0

Nailed it. 정말 고맙습니다! :디 – Lemmons

관련 문제