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

Monogame的工作方式是,将所有输入点都转换为手势,可以使用以下命令进行读取:

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

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

最佳答案

该功能未内置到MonoGame中,因为它不是原始XNA的一部分。本质上,您想要多个由窗口的子矩形定义的“逻辑” TouchPanel。但是TouchPanel是静态的,因此默认XNA中整个游戏只有一个。

好消息是MonoGame进行了自己的手势识别。因此,有了代码,您只需要对MonoGame进行一些更改。

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

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

关于c# - 是否可以在Monogame/XNA中获得 “contextual”手势?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27330709/

10-13 04:09