C++ SDL:两个事件循环?
请看下面这段代码:C++ SDL:两个事件循环?,c++,sdl,C++,Sdl,请看下面这段代码: 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)) {
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_在等待按键时退出工作。有什么办法吗?或者你们有更好的主意吗
我是个新手,所以请具体点D名称
keyEvent
具有误导性SDL_WaitEvent
将等待任何类型的事件,包括退出
SDL_Event event;
SDL_WaitEvent(&event);
switch (event.type) {
case SDL_QUIT:
quit = true;
break;
/* cases for keyboard events, etc. */
}
名称
keyEvent
具有误导性SDL_WaitEvent
将等待任何类型的事件,包括退出
SDL_Event event;
SDL_WaitEvent(&event);
switch (event.type) {
case SDL_QUIT:
quit = true;
break;
/* cases for keyboard events, etc. */
}
最小变化:
如果(退出)中断,您可以添加设置退出的内部while循环之后的代码>
或者,您可以将外部while循环移动到一个单独的函数,并添加一个返回
afterQUIT=true代码>
更好的变化:
重构您的代码,类似于web上的许多示例(在sourceforge、molly rocket或google it上)。最小更改:
如果(退出)中断,您可以添加设置退出的内部while循环之后的代码>
或者,您可以将外部while循环移动到一个单独的函数,并添加一个返回
afterQUIT=true代码>
更好的变化:
重构您的代码,类似于web上的许多示例(在sourceforge、molly rocket或google it)。不要等待事件发生。让事件发生在你身上,不要等待事件发生。让事件发生在你身上。是的,但问题是我不能去SDL_退出。我会打那个愚蠢的X,它不会退出。我必须在VC++中阻止它。@Lemmons:不知道你在Windows中是否需要做一些特殊的事情,但我会感到惊讶。在X11中对我来说很好。是的,但问题是我无法到达SDL_退出。我会打那个愚蠢的X,它不会退出。我必须在VC++中阻止它。@Lemmons:不知道你在Windows中是否需要做一些特殊的事情,但我会感到惊讶。在X11中对我很好。