2014-12-06 40 views
17

我正在使用Monogame的多点触控应用程序,其中多个用户可以同时使用单独的文档/图像/视频在更大的多点触控屏幕上工作,而且我想知道是否可以将手势“上下文感知”也就是说,在墙的一侧夹住文档的两个手指不应该影响某人摇动墙的另一侧。是否有可能在Monogame/XNA中获得“上下文”手势?

方式Monogame的工作原理是,所有的输入点被翻译成手势,其可以使用阅读:

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

有没有一种方法,使限制在一定的点在屏幕上比划,还是我需要自己实现这个吗?例如,通过查看源代码,似乎TouchPanelState类完成所有工作,但不幸的是它的构造函数是internal

+0

我不知道也没有经历任何XNA或Monogame编程,但是对于记录来说,它似乎有一个'TouchPanel'静态类,它有一个'GetState()'方法。也许这可能有助于实例化你想要的'TouchPanelState'类? – 2014-12-18 19:56:38

回答

2

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

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

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

注:这不帮你,但MonoGame不会让你有一个以上的操作系统窗口(仅在Windows据我所知)在这种情况下,静电型触摸屏的第一个窗口,有一个单独的API访问触摸输入/手势的任何额外的窗口。

相关问题