【问题标题】:SDL "dropping" initial event?SDL“掉线”初始事件?
【发布时间】:2013-04-12 19:02:32
【问题描述】:

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

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

【问题讨论】:

    标签: c ubuntu sdl


    【解决方案1】:

    改变你的

    case SDL_QUIT:
    RUNNING = 0;
    break;
    

    case SDL_QUIT:
    exit( 0 ) ;
    break;
    

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

    【讨论】:

    • 成功了。太感谢了! :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多