C++ SDL2.0.3事件循环不';行不通
我不能让SDL等一个事件。当我尝试打开窗口时,窗口只是在屏幕上短暂闪烁然后消失,我的IDE中没有任何错误或任何内容,构建日志中也没有任何内容。我查看了lazyfoo和SDL wiki,但没有任何帮助。我使用的是代码块和SDL2.0.3,以下是我目前所掌握的:C++ SDL2.0.3事件循环不';行不通,c++,sdl,C++,Sdl,我不能让SDL等一个事件。当我尝试打开窗口时,窗口只是在屏幕上短暂闪烁然后消失,我的IDE中没有任何错误或任何内容,构建日志中也没有任何内容。我查看了lazyfoo和SDL wiki,但没有任何帮助。我使用的是代码块和SDL2.0.3,以下是我目前所掌握的: while(&event != NULL && !quit) { while(SDL_PollEvent(&event) > 0) { if(event.type ==
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;
}
}
}
}
}
有什么建议吗?您正在轮询一个事件
SDL\u PollEvent
,如果您想等待一个事件,您应该首先使用SDL\u WaitEvent
在进入此循环之前是否退出false
如果没有要轮询的事件,我相信事件是NULL
,导致您的程序在下次看到时退出,而(&event!=NULL&&quit)
。如果启动时没有即时事件,您可能永远无法进入该循环。编辑:哇-以为事件
是一个指针:
while(SDL\u PollEvent(&event))
行将循环执行,直到处理完所有挂起的事件。(!quit)
时的outter将使您的程序保持打开状态,即使此时没有要处理的事件。您是否已使用调试器完成此操作?…或者至少是printf debugging您是否可以添加事件声明?和&事件!=NULL
是无用的,你应该删除它。我得到了相同的结果&event
是event
的地址,它永远不会为NULL。SDL\u PollEvent
的返回值将告诉您是否有新事件写入了&event
.Ah-oops。抱歉,我假设它是指针,因为他正在检查它是否为空。在这种情况下,“退出”必须是假的,对吗?是的。所有这些代码也可能位于从未调用过的函数中。从提问的方式来看,没有水晶球很难回答。