SDL事件处理框架
2014-11-11 09:19
323 查看
同步事件处理框架:
还有两个不常用的事件函数:
异步事件 处理框架:
有时比较复杂的游戏的主循环可能用作其它程序,这时用得上事件过滤器,事件过滤器,在有事件发生调用事件处理回调函数。因此称为异步事件处理.
它调用 void SDL_SetEventFilter(SDL_EventFilter filter);来加入事件过滤回调函数.
其中.filter是一个函数指针,它有如下类型
SDL按键类型:
typedef struct SDL_Keysym
{
SDL_Scancode scancode; /**< SDL physical key code - see ::SDL_Scancode for details */
SDL_Keycode sym; /**< SDL virtual key code - see ::SDL_Keycode for details */
Uint16 mod; /**< current key modifiers */
Uint32 unused;
} SDL_Keysym;
keysym有如下定义(只是一部分)
事件循环可以这么写:
主循环 int quit = false; while(quit == false) { while(SDL_PollEvent(&event)) { switch(event.type) { case SDL_QUIT: quit = true; break; default: break; } } }
还有两个不常用的事件函数:
SDL_WaitEvent();//必须等到有一个事件才返回,而SDL_PollEvent没有事件也立即返回。
SDL_PeepEvent();//从队列中获取事件,但事件本身仍然存在于事件队列中。
异步事件 处理框架:
有时比较复杂的游戏的主循环可能用作其它程序,这时用得上事件过滤器,事件过滤器,在有事件发生调用事件处理回调函数。因此称为异步事件处理.
它调用 void SDL_SetEventFilter(SDL_EventFilter filter);来加入事件过滤回调函数.
其中.filter是一个函数指针,它有如下类型
<pre name="code" class="cpp">SDL_SetEventFilter(SDL_EventFilter);//1.2版本 SDL_SetEventFilter(SDL_EventFilter filter,void *userdata);//2.0版本
SDL按键类型:
type : SDL_KEYDOWN
typedef struct SDL_Keysym
{
SDL_Scancode scancode; /**< SDL physical key code - see ::SDL_Scancode for details */
SDL_Keycode sym; /**< SDL virtual key code - see ::SDL_Keycode for details */
Uint16 mod; /**< current key modifiers */
Uint32 unused;
} SDL_Keysym;
keysym有如下定义(只是一部分)
SDLK_LEFTBRACKET = 91, SDLK_BACKSLASH = 92, SDLK_RIGHTBRACKET = 93, SDLK_CARET = 94, SDLK_UNDERSCORE = 95, SDLK_BACKQUOTE = 96, SDLK_a = 97, SDLK_b = 98, SDLK_c = 99, SDLK_d = 100, SDLK_e = 101, SDLK_f = 102,
事件循环可以这么写:
int quit = false; while( quit == false ) { Now we start the main loop. This loop will keep going until the user sets quit to true. //While there's an event to handle while( SDL_PollEvent( &event ) ) { switch(event.type) { case SDL_QUIT: quit = true; break; case SDL_KEYDOWN: switch( event.key.keysym.sym ) { case SDLK_UP: ; break; case SDLK_DOWN: ; break; case SDLK_a: ; break; case SDLK_RIGHT: ; break; } break; default: break; } }
相关文章推荐
- 探讨与比较Java和.NET的事件处理框架-Java基础-Java-编程开发
- 事件处理框架
- 【框架-MFC】CMFCPropertyGridCtrl(chenlu1):属性值改变事件的触发与处理
- SDL事件处理
- libevent源码浅析: 事件处理框架
- MVVM 的事件处理: 利用Prism框架进行EventToCommand
- java设计模式----模版模式+内部类+设计时间事件处理框架
- ACE Reactor框架处理事件及多个I/O流
- 对于前端js框架对于事件处理的应用场景探讨
- 事件监听处理小框架
- SDL解析——SDL事件处理(1)
- 使用DXUT框架简单处理鼠标事件
- libevent事件处理框架分析
- ACE:Reactor框架处理事件和多个I/O流
- ACE:Reactor框架--处理事件及多个I/O流
- 事件监听处理小框架
- libevent事件处理框架分析
- 事件流处理框架NEsper for .NET
- Android游戏开发框架(四)按键事件处理
- Atlas脚本框架下为控件重复添加和绑定事件处理函数