提问人:Different 提问时间:11/15/2023 最后编辑:HolyBlackCatDifferent 更新时间:11/15/2023 访问量:48
在 SDL 中,如何查找 SDL_Event.type 的名称
In SDL how do I find the name of an SDL_Event.type
问:
我看到 SDL_Event.type 是一个对应于特定类型事件的数字,除了对我遇到的每个新事件使用 google 之外,有没有办法将它们转换为带有其名称的字符串?
例如,我在网上找不到任何关于 1024 或 0x400 类型的内容,我滚动浏览了常量的所有可能值,发现它是鼠标移动。
答:
0赞
Ted Lyngmo
11/15/2023
#1
可以在 SDL_events.h
中找到 s 的完整列表。通过一些格式,你可以得到这个备忘单:SDL_EventType
SDL_EventType |
价值 | 笔记 |
---|---|---|
SDL_FIRSTEVENT | 0x0000 | 未使用(不删除) |
SDL_QUIT | 0x0100 | 用户请求的退出 |
SDL_APP_TERMINATING | 0x0101 | 应用程序被 OS 在 iOS 上调用 在 Android 上 调用 applicationWillTerminate() onDestroy() |
SDL_APP_LOWMEMORY | 0x0102 | 应用程序内存不足,如果可能,请释放内存。 在 iOS 上调用 在 Android 上调用 在 applicationDidReceiveMemoryWarning() onLowMemory() |
SDL_APP_WILLENTERBACKGROUND | 0x0103 | 应用程序即将进入后台 在 iOS 上调用 在 Android 上调用 在 applicationWillResignActive() onPause() |
SDL_APP_DIDENTERBACKGROUND | 0x0104 | 该应用程序确实进入了后台,并且可能在一段时间内无法获得 CPU 在 iOS 上调用 在 Android 上 调用 applicationDidEnterBackground() onPause() |
SDL_APP_WILLENTERFOREGROUND | 0x0105 | 应用程序即将进入前台 Called on iOS in Called on Android in applicationWillEnterForeground() onResume() |
SDL_APP_DIDENTERFOREGROUND | 0x0106 | 该应用程序现在是交互式 的 在 iOS 上调用 在 Android 上调用 在 applicationDidBecomeActive() onResume() |
SDL_LOCALECHANGED | 0x0107 | 用户的区域设置首选项已更改。 |
SDL_DISPLAYEVENT | 0x0150 | 显示状态更改 |
SDL_WINDOWEVENT | 0x0200 | 窗口状态更改 |
SDL_SYSWMEVENT | 0x0201 | 系统特定事件 |
SDL_KEYDOWN | 0x0300 | 按键 |
SDL_KEYUP | 0x0301 | 密钥已发布 |
SDL_TEXTEDITING | 0x0302 | 键盘文本编辑(合成) |
SDL_TEXTINPUT | 0x0303 | 键盘文本输入 |
SDL_KEYMAPCHANGED | 0x0304 | 键盘映射因系统事件(如输入语言或键盘布局更改)而更改 |
SDL_TEXTEDITING_EXT | 0x0305 | 扩展的键盘文本编辑(合成) |
SDL_MOUSEMOTION | 0x0400 | 鼠标移动 |
SDL_MOUSEBUTTONDOWN | 0x0401 | 按下鼠标按钮 |
SDL_MOUSEBUTTONUP | 0x0402 | 鼠标按钮松开 |
SDL_MOUSEWHEEL | 0x0403 | 鼠标滚轮运动 |
SDL_JOYAXISMOTION | 0x0600 | 操纵杆轴运动 |
SDL_JOYBALLMOTION | 0x0601 | 操纵杆轨迹球运动 |
SDL_JOYHATMOTION | 0x0602 | 操纵杆帽位置更改 |
SDL_JOYBUTTONDOWN | 0x0603 | 按下操纵杆按钮 |
SDL_JOYBUTTONUP | 0x0604 | 操纵杆按钮松开 |
SDL_JOYDEVICEADDED | 0x0605 | 系统已插入新的操纵杆 |
SDL_JOYDEVICEREMOVED | 0x0606 | 已移除打开的操纵杆 |
SDL_JOYBATTERYUPDATED | 0x0607 | 操纵杆电池电量变化 |
SDL_CONTROLLERAXISMOTION | 0x0650 | 游戏控制器轴运动 |
SDL_CONTROLLERBUTTONDOWN | 0x0651 | 按下游戏控制器按钮 |
SDL_CONTROLLERBUTTONUP | 0x0652 | 游戏控制器按钮发布 |
SDL_CONTROLLERDEVICEADDED | 0x0653 | 新的游戏控制器已插入到系统中 |
SDL_CONTROLLERDEVICEREMOVED | 0x0654 | 已打开的游戏控制器已被移除 |
SDL_CONTROLLERDEVICEREMAPPED | 0x0655 | 控制器映射已更新 |
SDL_CONTROLLERTOUCHPADDOWN | 0x0656 | 触摸游戏控制器触摸板 |
SDL_CONTROLLERTOUCHPADMOTION | 0x0657 | 游戏控制器触摸板手指已移动 |
SDL_CONTROLLERTOUCHPADUP | 0x0658 | 游戏控制器触摸板手指被抬起 |
SDL_CONTROLLERSENSORUPDATE | 0x0659 | 游戏控制器传感器已更新 |
SDL_FINGERDOWN | 0x0700 | |
SDL_FINGERUP | 0x0701 | |
SDL_FINGERMOTION | 0x0702 | |
SDL_DOLLARGESTURE | 0x0800 | |
SDL_DOLLARRECORD | 0x0801 | |
SDL_MULTIGESTURE | 0x0802 | |
SDL_CLIPBOARDUPDATE | 0x0900 | 剪贴板或主要选择已更改 |
SDL_DROPFILE | 0x1000 | 系统请求打开文件 |
SDL_DROPTEXT | 0x1001 | 文本/纯拖放事件 |
SDL_DROPBEGIN | 0x1002 | 一组新的删除正在开始(NULL 文件名) |
SDL_DROPCOMPLETE | 0x1003 | 当前放置集现已完成(NULL 文件名) |
SDL_AUDIODEVICEADDED | 0x1100 | 新的音频设备可用 |
SDL_AUDIODEVICEREMOVED | 0x1101 | 音频设备已被移除 |
SDL_SENSORUPDATE | 0x1200 | 传感器已更新 |
SDL_RENDER_TARGETS_RESET | 0x2000 | 渲染目标已重置,其内容需要更新 |
SDL_RENDER_DEVICE_RESET | 0x2001 | 设备已重置,需要重新创建所有纹理 |
SDL_POLLSENTINEL | 0x7F00 | 表示事件轮询周期的结束 |
SDL_USEREVENT | 0x8000 | 事件 through 供你使用,并应使用SDL_USEREVENT SDL_LASTEVENT SDL_RegisterEvents() |
SDL_LASTEVENT | 0xFFFF | 最后一个事件仅用于边界内部数组 |
评论
SDL_events.c:SDL_LogEvent()
;可悲的是,它不是公共的,也没有返回字符串。但确实包含一个梯子,你可以偷:)switch