SDL 2.0.3事件循环不起作用

时间:2015-07-03 22:52:24

标签: c++ sdl

我不能让SDL等待一个事件。当我尝试窗口只是在屏幕上短暂闪烁然后消失时,我的IDE中没有任何错误或任何内容,构建日志中也没有任何内容。我看了lazyfoo和SDL维基,但没有帮助。我正在使用代码块和SDL 2.0.3这是我到目前为止所拥有的:

while(&event != NULL && !quit)
{
    while(SDL_PollEvent(&event) > 0)
    {
        if(event.type == SDL_QUIT)
        {
            quit = true;
        }
        else
        {
            if(event.type == SDL_KEYDOWN)
            {
                switch(event.key.keysym.sym)
                {
                    case SDLK_LEFT:
                        currentSurface = keyPressSurfaces[KEY_PRESS_LEFT];
                        break;
                    case SDLK_UP:
                        currentSurface = keyPressSurfaces[KEY_PRESS_UP];
                        break;
                    case SDLK_RIGHT:
                        currentSurface = keyPressSurfaces[KEY_PRESS_RIGHT];
                        break;
                    case SDLK_DOWN:
                        currentSurface = keyPressSurfaces[KEY_PRESS_DOWN];
                        break;
                    default:
                        currentSurface = keyPressSurfaces[KEY_PRESS_DEFAULT];
                    break;
                }

            }
        }
    }
}

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您正在查看活动SDL_PollEvent,如果您想等待活动,则应使用SDL_WaitEvent

答案 1 :(得分:0)

首先,在进入此循环之前,quit是否为假?

如果没有要投票的事件,我认为事件为NULL,导致您的程序在下次看到while(&event != NULL && !quit)时退出。如果启动时没有立即事件,您可能永远不会进入该循环。 编辑:哎呀 - 认为event是一个指针:

while (SDL_PollEvent(&event))行将循环显示,直到处理完所有待处理事件。即使目前没有要处理的事件,外部while (!quit)也会使您的程序保持打开状态。