【问题标题】: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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      • 2011-03-16
      • 1970-01-01
      • 2015-10-02
      • 1970-01-01
      相关资源
      最近更新 更多