- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如手册所述,SDL_PollEvent
函数“如果有未决事件则返回 1,如果没有可用事件则返回 0。” ,这就是我们使用测试 SDL_PollEvent(&e)!=0
的原因(其中 e
是 SDL_Event
)。
但是,如何使用这个测试:!SDL_PollEvent(&e)
?它应该可以工作,但显然它会引起一些问题。
这里是一个代码示例:
#include <SDL2/SDL.h>
#include <stdio.h>
int main(int argc, char* args[]){
SDL_Init(SDL_INIT_VIDEO);
SDL_Window* window = SDL_CreateWindow("Hello",SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 100, 100, SDL_WINDOW_SHOWN);
SDL_Event e;
int quit=0;
while(!quit){
//Here the test
while (!SDL_PollEvent(&e)){
if (e.type==SDL_QUIT)
quit=1;
else if ( e.type == SDL_KEYDOWN )
printf( "Hello\n" );
}
}
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
这段代码应该做的是打开一个新窗口并在每次按下某个键时在控制台中打印“Hello”。这段代码在测试 SDL_PollEvent(&e)!=0
时工作正常,但是当我使用测试 !SDL_PollEvent(&e) 时它不会读取
(但它确实会在 while 中进入并毫无问题地处理 SDL_KEYDOWN
事件SDL_QUIT
事件)。
为什么会出现这种行为?
最佳答案
while (!SDL_PollEvent(&e))
需要:
while (SDL_PollEvent(&e))
如果它应该与 SDL_PollEvent(&e) != 0
相同
因为 !SDL_PollEvent(&e)
等同于调用 while(0)
关于c++ - 在 'SDL_PollEvent'中测试 'while'的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29706885/
所以我正在阅读这篇文章,其中包含“SDL 中多线程编程的提示和建议”-https://vilimpoc.org/research/portmonitorg/sdl-tips-and-tricks.ht
我正在 OpenGL 中创建一个游戏,遇到 SDL_PollEvent 问题,没有接收到所有事件,例如,如果我按住一个键,我必须等待大约 1-3 秒,程序才会意识到我刚才有什么完毕。这是我的mai
我目前正在使用 SDL 制作一款游戏,但我遇到了一个问题,即 SDL 无法获取某些事件。例如,我会按“w”向前移动,同时移动鼠标环顾四周。但是假设我然后按“a”或“d”,SDL 不会选择这些事件,甚至
我正在使用 SDL 库来捕获屏幕上的触摸和鼠标事件。但是如果我断开触摸屏并重新连接它,有时我会停止获取手指触摸事件,即 SDL_FINGERMOTION、SDL_FINGERDOWN、SDL_FING
这是SDL2代码的一部分 SDL主函数 int main(int argc,char *argv[]) { ... ... bool quit=false; S
我正在阅读一本有关SDL的介绍性书籍代码,并且有这样的示例代码: void Game::handleEvents() { SDL_Event event; if (SDL_PollEv
我使用 SDL2 在 C++ 中拼凑了一个非常基本的游戏循环,我注意到每隔几秒,SDL_PollEvent 似乎异常缓慢,即使没有任何事情发生也是如此。 我发送了 deltaTime 来控制每个循环,
我最近才开始使用 C 语言并使用 SDL,所以我确信我搞砸了一些基本的东西,但我能找到的每个示例代码看起来都像我的,除了我的不起作用。因此,欢迎任何帮助。 #include #include in
我目前正在浏览 SDL2 的 Lazy Foo 教程(我在 Linux 机器上这样做),我遇到了一些错误,其中包含 SDL_PollEvent 在我的主要循环似乎阻止了 SDL_UpdateWindo
我使用 SDL2 在 C++ 中拼凑了一个非常基本的游戏循环,我注意到每隔几秒,SDL_PollEvent 似乎异常缓慢,即使没有发生任何事情。 我将我的 deltaTime 发送到控制台每个循环,它
我目前正在使用 C 和 gcc 编译器来处理 SDL2。我已经设法让图像在 2 秒后自动加载并关闭,但现在我想等到用户按下顶部的 X 按钮,或者用户按下 ESC 键. 但是,在几个打印语句显示一切正常
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我已经使用 SDL 一段时间了,但现在看来我在处理键盘事件时一直在以错误的方式做事。 通常我的主循环看起来像这样: int main() { SDL_Init(SDL_INIT_VIDEO);
我有一个程序可以使用 xset dpms force on/off 打开和关闭屏幕,并且还可以循环调用 SDL_PollEvent(&e)。使用 xset 关闭显示器后,任何对 SDL_PollEve
我是一名优秀的程序员,十分优秀!