是否有可能在Monogame/XNA中获得“上下文”手势

本文关键字:上下文 手势 有可能 Monogame XNA 是否 | 更新日期: 2023-09-27 18:33:29

>我正在使用Monogame开发一个多点触控应用程序,其中多个用户可以同时在更大的多点触摸屏上工作,同时使用单独的文档/图像/视频,我想知道是否可以使手势"上下文感知",即两根手指捏住墙一侧的文档不应该影响某人平移墙的另一侧。

Monogame的工作方式是,所有输入点都被转换为手势,可以使用以下方法读取:

if (TouchPanel.IsGestureAvailable)
{
     var gesture = TouchPanel.ReadGesture();
     // do stuff
}

有没有办法使手势限制在屏幕上的某个点,还是我需要自己实现?例如,通过查看源代码,似乎 TouchPanelState 类完成了所有工作,但不幸的是它的构造函数internal .

是否有可能在Monogame/XNA中获得“上下文”手势

该功能没有内置于MonoGame中,因为它不是原始XNA的一部分。从本质上讲,您需要多个由窗口的子矩形定义的"逻辑"触摸屏。但是,触摸屏是静态的,因此在默认的XNA中,整个游戏只有一个。

好消息是MonoGame可以进行自己的手势识别。所以,代码就在那里,你只需要对MonoGame进行一些更改。

例如...
- 使TouchPanel成为一个非静态类,可以用给定的子矩形进行分配。
- 添加所有触摸屏方法的非静态版本。
静态方法重定向到触摸屏的单例/实例,保留旧的API。
...现在,您可以选择分配更多不是整个屏幕的触摸屏。

注意:这对您没有帮助,但MonoGame确实允许您拥有多个操作系统窗口(仅在Windows上afaik(,在这种情况下,静态TouchPanel是第一个窗口,并且有一个单独的API用于访问任何其他窗口的触摸输入/手势。