轮询后,SDL_Event.type始终为空

时间:2009-11-15 05:00:38

标签: c++ sdl

我有一个通用函数,它应该处理SDL事件队列中的任何事件。到目前为止,函数看起来像这样:

int eventhandler(void* args){
  cout << "Eventhandler started.\n";
  while (!quit){
    while (SDL_PollEvent(&event)){
      cout << "Got event to handle: " << event.type << "\n";
      switch (event.type){
        SDL_KEYDOWN:
          keyDownHandler(event.key.keysym.sym);
          break;
        default:
          break;
      }
    }
  }
}

然而,当我测试这个函数时,我得到了一大堆事件,但是 none 它们似乎都有一个类型。它甚至不打印0或任何东西 - 只是没有。按任意键时的输出如下所示:

Got event to handle:

没有别的。任何教程和SDL文档都说我应该处理这样的事件,但它不起作用。还有其他人有这个问题或解决方案吗?

顺便说一句,eventhandler在SDL_Thread中运行,但我不认为这是问题所在。

1 个答案:

答案 0 :(得分:1)

没有任何反应是case前面遗失SDL_KEYDOWN的结果 如果缺少case,编译器会看到一个跳转标签,您可以将其用于例如goto SDL_KEYDOWN;,这会导致default标签成为switch声明中的唯一标签。

除非你在某处设置了一些流标志,否则我不明白为什么event.type无法输出 event.type是一个Uint8,SDL只是从整数类型中键入,因此它应该像一个一样处理。像任何整数类型一样,它也不能“空”,但它的输出可以是。