SDL“丢弃”初始事件?

时间:2013-04-12 09:06:55

标签: c ubuntu sdl

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

如果需要更多信息,请告诉我们!

1 个答案:

答案 0 :(得分:2)

更改您的

case SDL_QUIT:
RUNNING = 0;
break;

case SDL_QUIT:
exit( 0 ) ;
break;

程序应立即退出,确认事件循环正常,问题出现在您未显示的代码中。我的猜测是game_run()在某处再次被调用,并且因为int RUNNING = 1;设置在每个game_run()的开头,所以您输入另一个while(RUNNING == 1)循环。