Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ SDL:两个事件循环?_C++_Sdl - Fatal编程技术网

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循环移动到一个单独的函数,并添加一个
返回
after
QUIT=true

更好的变化:

重构您的代码,类似于web上的许多示例(在sourceforge、molly rocket或google it上)。

最小更改:

如果(退出)中断,您可以添加

或者,您可以将外部while循环移动到一个单独的函数,并添加一个
返回
after
QUIT=true

更好的变化:


重构您的代码,类似于web上的许多示例(在sourceforge、molly rocket或google it)。

不要等待事件发生。让事件发生在你身上,不要等待事件发生。让事件发生在你身上。是的,但问题是我不能去SDL_退出。我会打那个愚蠢的X,它不会退出。我必须在VC++中阻止它。@Lemmons:不知道你在Windows中是否需要做一些特殊的事情,但我会感到惊讶。在X11中对我来说很好。是的,但问题是我无法到达SDL_退出。我会打那个愚蠢的X,它不会退出。我必须在VC++中阻止它。@Lemmons:不知道你在Windows中是否需要做一些特殊的事情,但我会感到惊讶。在X11中对我很好。