SDL事件处理(一些数据类型)
来源:互联网 发布:固定循环编程注意什么? 编辑:程序博客网 时间:2024/06/13 08:32
SDL1.2中的定义:
typedef enum { SDL_NOEVENT = 0,/**< Unused (do not remove) */ SDL_ACTIVEEVENT,/**< Application loses/gains visibility */ SDL_KEYDOWN,/**< Keys pressed */ SDL_KEYUP,/**< Keys released */ SDL_MOUSEMOTION,/**< Mouse moved */ SDL_MOUSEBUTTONDOWN,/**< Mouse button pressed */ SDL_MOUSEBUTTONUP,/**< Mouse button released */ SDL_JOYAXISMOTION,/**< Joystick axis motion */ SDL_JOYBALLMOTION,/**< Joystick trackball motion */ SDL_JOYHATMOTION,/**< Joystick hat position change */ SDL_JOYBUTTONDOWN,/**< Joystick button pressed */ SDL_JOYBUTTONUP,/**< Joystick button released */ SDL_QUIT,/**< User-requested quit */ SDL_SYSWMEVENT,/**< System specific event */ SDL_EVENT_RESERVEDA,/**< Reserved for future use.. */ SDL_EVENT_RESERVEDB,/**< Reserved for future use.. */ SDL_VIDEORESIZE,/**< User resized video mode */ SDL_VIDEOEXPOSE,/**< Screen needs to be redrawn */ SDL_EVENT_RESERVED2,/**< Reserved for future use.. */ SDL_EVENT_RESERVED3,/**< Reserved for future use.. */ SDL_EVENT_RESERVED4,/**< Reserved for future use.. */ SDL_EVENT_RESERVED5,/**< Reserved for future use.. */ SDL_EVENT_RESERVED6,/**< Reserved for future use.. */ SDL_EVENT_RESERVED7,/**< Reserved for future use.. */ /** Events SDL_USEREVENT through SDL_MAXEVENTS-1 are for your use */ SDL_USEREVENT = 24, /** This last event is only for bounding internal arrays* It is the number of bits in the event mask datatype -- Uint32 */ SDL_NUMEVENTS = 32} SDL_EventType;
SDL2.0中的定义:typedef enum{ SDL_FIRSTEVENT = 0, /**< Unused (do not remove) */ /* Application events */ SDL_QUIT = 0x100, /**< User-requested quit */ /* These application events have special meaning on iOS, see README-ios.txt for details */ SDL_APP_TERMINATING, /**< The application is being terminated by the OS Called on iOS in applicationWillTerminate() Called on Android in onDestroy() */ SDL_APP_LOWMEMORY, /**< The application is low on memory, free memory if possible. Called on iOS in applicationDidReceiveMemoryWarning() Called on Android in onLowMemory() */ SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background Called on iOS in applicationWillResignActive()Called on Android in onPause()*/ SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time Called on iOS in applicationDidEnterBackground()Called on Android in onPause() */ SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground Called on iOS in applicationWillEnterForeground() Called on Android in onResume() */ SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive Called on iOS in applicationDidBecomeActive() Called on Android in onResume() */ /* Window events */ SDL_WINDOWEVENT = 0x200, /**< Window state change */ SDL_SYSWMEVENT, /**< System specific event */ /* Keyboard events */ SDL_KEYDOWN = 0x300, /**< Key pressed */ SDL_KEYUP, /**< Key released */ SDL_TEXTEDITING, /**< Keyboard text editing (composition) */ SDL_TEXTINPUT, /**< Keyboard text input */ /* Mouse events */ SDL_MOUSEMOTION = 0x400, /**< Mouse moved */ SDL_MOUSEBUTTONDOWN, /**< Mouse button pressed */ SDL_MOUSEBUTTONUP, /**< Mouse button released */ SDL_MOUSEWHEEL, /**< Mouse wheel motion */ /* Joystick events */ SDL_JOYAXISMOTION = 0x600, /**< Joystick axis motion */ SDL_JOYBALLMOTION, /**< Joystick trackball motion */ SDL_JOYHATMOTION, /**< Joystick hat position change */ SDL_JOYBUTTONDOWN, /**< Joystick button pressed */ SDL_JOYBUTTONUP, /**< Joystick button released */ SDL_JOYDEVICEADDED, /**< A new joystick has been inserted into the system */ SDL_JOYDEVICEREMOVED, /**< An opened joystick has been removed */ /* Game controller events */ SDL_CONTROLLERAXISMOTION = 0x650, /**< Game controller axis motion */ SDL_CONTROLLERBUTTONDOWN, /**< Game controller button pressed */ SDL_CONTROLLERBUTTONUP, /**< Game controller button released */ SDL_CONTROLLERDEVICEADDED, /**< A new Game controller has been inserted into the system */ SDL_CONTROLLERDEVICEREMOVED, /**< An opened Game controller has been removed */ SDL_CONTROLLERDEVICEREMAPPED, /**< The controller mapping was updated */ /* Touch events */ SDL_FINGERDOWN = 0x700, SDL_FINGERUP, SDL_FINGERMOTION, /* Gesture events */ SDL_DOLLARGESTURE = 0x800, SDL_DOLLARRECORD, SDL_MULTIGESTURE, /* Clipboard events */ SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard changed */ /* Drag and drop events */ SDL_DROPFILE = 0x1000, /**< The system requests a file open */ /* Render events */ SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset */ /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use, * and should be allocated with SDL_RegisterEvents() */ SDL_USEREVENT = 0x8000, /** * This last event is only for bounding internal arrays */ SDL_LASTEVENT = 0xFFFF} SDL_EventType;
SDL2.0中的事件类型明显比SDL1.2中的多!
SDL采用int SDL_PollEvent(SDL_Event* event);来从底层抽取事件。每一个事件都有一个独立的数据结构来定义,但是第一个成员都是int type.
例如:SDL1.2中的:
typedef struct SDL_JoyBallEvent {Uint8 type;Uint8 which;Uint8 ball;Sint16 xrel;Sint16 yrel;} SDL_JoyBallEvent;/** Joystick hat position change event structure */typedef struct SDL_JoyHatEvent {Uint8 type;Uint8 which;Uint8 hat;Uint8 value;} SDL_JoyHatEvent;SDL2.0中的:typedef struct SDL_JoyBallEvent{ Uint32 type; Uint32 timestamp; SDL_JoystickID which; Uint8 ball; Uint8 padding1; Uint8 padding2; Uint8 padding3; Sint16 xrel; Sint16 yrel; } SDL_JoyBallEvent;/** * \brief Joystick hat position change event structure (event.jhat.*) */typedef struct SDL_JoyHatEvent{ Uint32 type; Uint32 timestamp; SDL_JoystickID which; Uint8 hat; Uint8 value; Uint8 padding1; Uint8 padding2;} SDL_JoyHatEvent;从上面也可以看出SDL2.0相对于SDL1.2事件类型的改变而SDL_Event是各种事件的联合:SDL1.2:typedef union SDL_Event {Uint8 type;SDL_ActiveEvent active;SDL_KeyboardEvent key;SDL_MouseMotionEvent motion;SDL_MouseButtonEvent button;SDL_JoyAxisEvent jaxis;SDL_JoyBallEvent jball;SDL_JoyHatEvent jhat;SDL_JoyButtonEvent jbutton;SDL_ResizeEvent resize;SDL_ExposeEvent expose;SDL_QuitEvent quit;SDL_UserEvent user;SDL_SysWMEvent syswm;} SDL_Event;SDL2.0:typedef union SDL_Event{ Uint32 type; /**< Event type, shared with all events */SDL_EventType中定义的。具体的去看SDL源码 SDL_CommonEvent common; /**< Common event data */ SDL_WindowEvent window; /**< Window event data */ SDL_KeyboardEvent key; /**< Keyboard event data */ SDL_TextEditingEvent edit; /**< Text editing event data */ SDL_TextInputEvent text; /**< Text input event data */ SDL_MouseMotionEvent motion; /**< Mouse motion event data */ SDL_MouseButtonEvent button; /**< Mouse button event data */ SDL_MouseWheelEvent wheel; /**< Mouse wheel event data */ SDL_JoyAxisEvent jaxis; /**< Joystick axis event data */ SDL_JoyBallEvent jball; /**< Joystick ball event data */ SDL_JoyHatEvent jhat; /**< Joystick hat event data */ SDL_JoyButtonEvent jbutton; /**< Joystick button event data */ SDL_JoyDeviceEvent jdevice; /**< Joystick device change event data */ SDL_ControllerAxisEvent caxis; /**< Game Controller axis event data */ SDL_ControllerButtonEvent cbutton; /**< Game Controller button event data */ SDL_ControllerDeviceEvent cdevice; /**< Game Controller device event data */ SDL_QuitEvent quit; /**< Quit request event data */ SDL_UserEvent user; /**< Custom event data */ SDL_SysWMEvent syswm; /**< System dependent window event data */ SDL_TouchFingerEvent tfinger; /**< Touch finger event data */ SDL_MultiGestureEvent mgesture; /**< Gesture event data */ SDL_DollarGestureEvent dgesture; /**< Gesture event data */ SDL_DropEvent drop; /**< Drag and drop event data */ Uint8 padding[56];} SDL_Event;
0 0
- SDL事件处理(一些数据类型)
- SDL解析——SDL事件处理(1)
- SDL学习笔记四(事件处理)
- SDL事件处理框架
- SDL Event Handling 事件处理
- SDL事件处理:SDL_Event结构体
- SDL编程四(事件)
- SDL解析——SDL视频处理(2)
- jquery一些事件处理
- SDL库的学习笔记之四—事件处理
- SDL资料(六):键盘事件
- SDL事件查询函数:SDL_PeepEvents()
- SDL学习(三)事件驱动编程
- SDL学习(2)图形的处理
- SDL学习(3)图像运动处理
- tree中的一些事件处理
- SDL 键盘事件监控
- SDL键盘事件
- Can not perform this action after onSaveInstanceState 解决办法
- 小黑小波比.查看并杀死某进程
- SQLSERVER中如何忽略索引提示
- 最长公共子序列问题LCS
- WPF实现3D翻转的动画效果
- SDL事件处理(一些数据类型)
- cv 论文(CNN相关)
- 多人在线游戏开发 Unity3D 序言
- ubuntu上使用cron执行定时任务计划
- 阿里巴巴 测试开发工程师 校招经历
- WPF实现3D翻转的动画效果
- 对于一些css样式的巧妙方法进行总结。
- sql server unique约束的增加与删除
- PLSQL==》本地动态SQL