【发布时间】:2016-03-31 15:49:41
【问题描述】:
由于 SDL2 的行为我一无所知,我已经与一个错误斗争了几个小时。
特别是,我不知道,在移动设备上,每当用户触摸屏幕时,都会发送两个事件:
- 第一个对我来说很明显:手指向下事件。
- 第二个确实不太明显:鼠标按下事件。
这同样适用于手指向上/鼠标按钮向上事件。
因为他们,一个内部命令被抛出了两次,让我很头疼。
目标是出于超出问题目的的原因同时支持移动和桌面环境。
另外,我猜 SDL2 会这样工作,以支持现有代码库的平滑迁移。
无论如何,是否有(让我说)SDL2 方式 来抑制移动设备上的鼠标相关事件?
老实说,从我的角度来看,它们没有多大意义,我想摆脱它们,除非该软件是在桌面环境中执行的。
此外,我既不想使用编译时参数,也不想拥有旨在抑制移动设备上的这些事件的专用代码部分。
代码很简单。下面是一个(可能)有意义的简化示例:
SDL_Event ev;
while(SDL_PollEvent(&ev)) {
switch(event.type) {
case SDL_FINGERDOWN:
// read it and throw an internal event E
break;
case SDL_MOUSEBUTTONDOWN:
// read it and throw an internal event E
break;
}
}
不幸的是,如上所述,当用户触摸屏幕时会读取上述两个事件。
* 编辑 *
我没有提到我是在 Android 设备上测试我的应用程序,而且我很确定 iOS 上也会出现同样的问题。
请参阅下面的回复。似乎确实问题(到目前为止我已经理解这不是一个问题)主要是由于SDL2在Android上默认处理手指事件的方式。
【问题讨论】:
-
我认为我们可能会从更多细节中受益。有什么要显示的代码吗?
-
好吧,我会试着安排一个有意义的sn-p。
-
你说的一件事让我很困惑 - ...
support both mobile and desktop environments for reasons that are beyond the purpose of the question.-> 你想在同一代码中同时支持 移动和桌面? -
我使用的是虚拟大小,但我想在开发阶段也可以在桌面环境(当然是高度信箱)上执行该代码。区别主要在于这些事件......
-
你能在两个平台上只使用鼠标事件而忽略手指事件吗?
标签: c++ mobile sdl sdl-2 mobile-application