SDL_WaitEvent: 当队列中有事件时,抛出事件。否则处于阻塞状态,释放 CPU。 SDL_WaitEventTimeout: 与SDL_WaitEvent的区别时,当到达超时时间后,退出阻塞状态。 SDL_PeekEvent: 从队列中取出事件,但该事件不从队列中删除。 SDL_PushEvent: 向队列中插入事件。 SDL只提供了这样几个简单的API,下面们来介绍几个常见...
SDL_PeekEvent: 从队列中取出事件,但该事件不从队列中删除。 SDL_PushEvent: 向队列中插入事件。 SDL只提供了这样几个简单的API,下面们来介绍几个常见的事件: SDL_WindowEvent : Window窗口相关的事件。 SDL_KeyboardEvent : 键盘相关的事件。 SDL_MouseMotionEvent : 鼠标移动相关的事件。 SDL_QuitEvent : 退出...
sdlEvent.type = SDL_CUSTOM_EVENT; SDL_PushEvent(&sdlEvent); } // 创建线程并运行 SDL_CreateThread(sdl_thread_custom_event, "custom_event", nullptr); 线程运行函数如上所示,定义一个 SDL_Event ,把它的 type 赋值为自定义的类型,然后通过SDL_PushEvent方法把该消息事件放到消息队列中去。 bool bQuit...
SDL_PeekEvent: 从队列中取出事件,但该事件不从队列中删除。 SDL_PushEvent: 向队列中插入事件。 3. SDL 处理事件的API SDL_WindowEvent : Window窗口相关的事件。 SDL_KeyboardEvent : 键盘相关的事件。 SDL_MouseMotionEvent : 鼠标移动相关的事件。 SDL_QuitEvent : 退出事件。 SDL_UserEvent : 用户自定义事...
SDL_WaitEvent: 当队列中有事件时,抛出事件。否则处于阻塞状态,释放 CPU。 SDL_WaitEventTimeout: 与SDL_WaitEvent的区别时,当到达超时时间后,退出阻塞状态。 SDL_PeekEvent: 从队列中取出事件,但该事件不从队列中删除。 SDL_PushEvent: 向队列中插入事件。
"SDL Event Handling", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 800, 600, SDL_WINDOW_SHOWN); 1. 2. 3. 4. 5. 6. 再后,处理事件 , 开启一个事件循环 , 不断调用 SDL_PollEvent 函数 , 获取是否有事件发生 , 如果获取到了键盘/鼠标事件 , 则执行对应的操作 ; ...
当用户点击了窗口左上角 叉 的时候,对应 SDL_Event 的 type 就是 SDL_QUIT ,这个 type 是一定要添加处理的,不然点叉就关闭不了窗口了。 bool bQuit = false; while (!bQuit){ while (SDL_PollEvent(&windowEvent)){ ...
SDL_Event custom_event;custom_event.type = CUSTOM_EVENT_TYPE;// 设置其他字段(例如custom_event.user.code等)SDL_PushEvent(&custom_event); 在事件处理循环中,我们可以检查SDL_Event结构体的类型字段,以判断是否收到了自定义事件。 事件过滤 要对特定类型的事件进行过滤,可以使用SDL_SetEventFilter函数。该函数...
SDL_PushEvent(&event); SDL_Delay(40); } thread_exit=0;//breakSDL_Eventevent;event.type =BREAK_EVENT; SDL_PushEvent(&event);//将结束事件推送出去return0; } SDLReadYuv::SDLReadYuv() {//window窗体的宽高intwindow_w =640, window_h =360;//像素的宽高constintpixel_w =640, pixel_h =...
if (SDL_QUIT == windowEvent.type){ break; } } } SDL 消息循环和事件响应 和Android 中的 Handler 机制有些类似,Handler 会关联一个线程,线程内部维护一个消息队列 MessageQueue,通过 Handler 像 MessageQueue 发送消息,然后再从 MessageQueue 中取出 Message 进行处理。