是否有可能获得" contextual" Monogame / XNA中的手势?

时间:2014-12-06 10:34:06

标签: c# gesture multi-touch monogame

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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