【问题标题】:Is it possible to get "contextual" gestures in Monogame/XNA?是否有可能在 Monogame/XNA 中获得“上下文”手势?
【发布时间】:2014-12-06 10:34:06
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我不知道也没有体验过任何 XNA 或 Monogame 编程,但为了记录,似乎有一个 TouchPanel 静态类,它有一个 GetState() 方法。也许这可以帮助您实例化您想要的 TouchPanelState 类?

标签: c# gesture multi-touch monogame


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多