【问题标题】:SFML multi-touch events and finger indexesSFML 多点触控事件和手指索引
【发布时间】:2020-10-20 14:30:14
【问题描述】:
我一直想知道如何使用 SFML 制作多点触控功能。官方文档说触摸是由“手指”索引识别的。但是,在我的情况下,它们并没有按预期工作。例如函数 Touch::isDown(finger index) 将参数视为触摸次数,而不是手指的索引。我尝试创建 TouchEvent 并设置 .finger 属性,但它也不起作用。
互联网上没有任何 SFML 多点触控的教程或示例。请解释我如何实现这一目标或提供一个小例子。谢谢。
【问题讨论】:
标签:
mobile
sfml
multi-touch
【解决方案1】:
我认为你有一些误解,这正是它应该如何工作的。
所有手指都与触摸屏相同。触摸屏只能检测触摸,无法检测您是用食指还是中指触摸。
说明:-
现在,当同时触摸多个手指时,sfml 会按照它们被触摸的顺序为其分配一个索引号。
如果你触摸一根手指,它会得到索引 0。然后你再触摸 2 个手指,它们会得到索引 1 和 2。
即使您抬起一根手指,只要至少有一根手指被触摸,其他手指的索引就会被保留。没有手指触摸时,索引将重置。
代码示例:-
您可以使用sf::Touch::isDown(1)检查第二根手指(索引1)是否被触摸,然后获取触摸坐标
if (sf::Touch::isDown(1))
{
sf::Vector2 touch_pos = sf::Touch::getPosition(1);
std::cout << "x-pos :" << touch_pos.x << std::endl;
std::cout << "y-pos :" << touch_pos.y << std::endl;
}