我在Ubuntu 12.04上用SDL 1.2编程。 SDL似乎“丢弃”给予事件循环的第一个事件。例如,如果我通过“x”框检查是否退出游戏,并且在我的应用程序中单击“x”框,则没有任何反应。然而,在第二次点击时,游戏退出。我的游戏循环:
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);
}
}
如果需要更多信息,请告诉我们!
答案 0 :(得分:2)
更改您的
case SDL_QUIT:
RUNNING = 0;
break;
到
case SDL_QUIT:
exit( 0 ) ;
break;
程序应立即退出,确认事件循环正常,问题出现在您未显示的代码中。我的猜测是game_run()
在某处再次被调用,并且因为int RUNNING = 1;
设置在每个game_run()
的开头,所以您输入另一个while(RUNNING == 1)
循环。