我不能让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;
}
}
}
}
}
有什么建议吗?
答案 0 :(得分:0)
您正在查看活动SDL_PollEvent
,如果您想等待活动,则应使用SDL_WaitEvent
答案 1 :(得分:0)
首先,在进入此循环之前,quit
是否为假?
如果没有要投票的事件,我认为事件为 编辑:哎呀 - 认为NULL
,导致您的程序在下次看到while(&event != NULL && !quit)
时退出。如果启动时没有立即事件,您可能永远不会进入该循环。event
是一个指针:
while (SDL_PollEvent(&event))
行将循环显示,直到处理完所有待处理事件。即使目前没有要处理的事件,外部while (!quit)
也会使您的程序保持打开状态。