2013-04-12 88 views
0

我正在使用Ubuntu 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); 
    } 
} 

如果需要更多信息,請告訴我!

回答

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