在这里看一下这段代码:
void game::startLoop()
{
while(QUIT == false)
{
getRoomUpdate();
applySurface(-15, 280, zombie_lefthand, buffer);
applySurface(455, 280, zombie_righthand, buffer);
SDL_Flip(buffer);
while(SDL_PollEvent(&gameEvent))
{
if(gameEvent.type == SDL_QUIT)
{
QUIT = true;
}
}
while(SDL_WaitEvent(&keyEvent))
{
switch(keyEvent.type)
{
case SDL_KEYDOWN:
switch(keyEvent.key.keysym.sym)
{
//blahkeypress
}
}
}
}
}
我正在试图弄清楚如何在我们等待按键时让SDL_QUIT工作。有没有办法做到这一点,或者你们有更好的主意吗?
我是一个新手,所以请具体一点。 :d
答案 0 :(得分:3)
名称keyEvent
具有误导性。 SDL_WaitEvent
将等待任何类型的事件,包括QUIT。
SDL_Event event;
SDL_WaitEvent(&event);
switch (event.type) {
case SDL_QUIT:
quit = true;
break;
/* cases for keyboard events, etc. */
}
答案 1 :(得分:1)
微小变化:
您可以在设置QUIT的内部while循环之后添加if (QUIT) break;
。
或者,您可以将外部while循环移动到单独的函数,并在return;
之后添加QUIT = true;
。
更好的改变:
重构您的代码,类似于网上提供的许多示例(在sourceforge,或者在molly rocket,或者只是google)。