我目前正在使用带有 gcc编译器的C来搞乱SDL2。我设法让图像在2秒后自动加载和关闭,但现在我想等到用户按下顶部的X按钮,或者让用户按下 ESC 键
然而,在几个打印语句显示一切正常但是我的SDL_PollEvent()
循环之后,我想知道是否有任何事件正在排队。当我运行程序时,我的图像显示在屏幕上,程序等待我的输入。我疯狂地敲击键盘上的任何键以获得响应并且没有任何反应。应该发生的一条消息是“你按了什么东西!”
然后我尝试单击窗口顶部的X但没有任何反应。我退出程序的唯一方法是在终端中按 CTRL + C 。
以下是我的事件循环代码:
/* Handle events on queue */
while(SDL_PollEvent(&e) != 0)
{
/* This print statement does not execute */
printf("Handling events!\n");
/* User quits */
switch(e.type)
{
case SDL_KEYDOWN:
switch(e.key.keysym.sym)
{
case SDLK_ESCAPE:
printf("Escape pressed!\n");
quit = true;
break;
default: printf("You pressed something!");
}
case SDL_QUIT:
quit = true;
break;
default: printf("Print anything!\n");
}
}
答案 0 :(得分:1)
确保在游戏循环中调用SDL_PollEvent循环。 SDL_PollEvent不会阻止等待事件,所以你需要每帧都一直调用它,直到有一些事件需要处理。
除此之外,您的代码看起来还不错。
答案 1 :(得分:0)
到目前为止,我很欣赏这些建议,但实际上没有任何效果的原因是因为我的清理功能被称为 close()。我最终把它改成了一些任意的名字,这解决了我的问题!