我有一个通用函数,它应该处理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中运行,但我不认为这是问题所在。
答案 0 :(得分:1)
没有任何反应是case
前面遗失SDL_KEYDOWN
的结果
如果缺少case
,编译器会看到一个跳转标签,您可以将其用于例如goto SDL_KEYDOWN;
,这会导致default
标签成为switch
声明中的唯一标签。
除非你在某处设置了一些流标志,否则我不明白为什么event.type
无法输出
event.type
是一个Uint8
,SDL只是从整数类型中键入,因此它应该像一个一样处理。像任何整数类型一样,它也不能“空”,但它的输出可以是。