gpt4 book ai didi

c# - 将触摸手势转换为鼠标手势

转载 作者:太空宇宙 更新时间:2023-11-03 15:57:48 25 4
gpt4 key购买 nike

这是我必须处理 tpouch 手势的一些代码示例:

public void HandleInput()
{
TouchPanel.EnabledGestures =
GestureType.FreeDrag | GestureType.DragComplete | GestureType.DoubleTap | GestureType.Tap;

while (TouchPanel.IsGestureAvailable)
{
GestureSample gs = TouchPanel.ReadGesture();
switch (gs.GestureType)
{
case GestureType.FreeDrag:
...
break;

case GestureType.DragComplete:
...
break;

case GestureType.DoubleTap:
...
break;

case GestureType.Tap:
...
break;

...

这是使用 monogame(即 XNA)编写的,我后来才意识到我没有在目标机器 (WinRT) 没有触摸功能的情况下处理鼠标输入。

到目前为止,我遇到的处理鼠标手势的唯一方法如下:

 MouseState mouseState = Mouse.GetState();
Vector2 mousePosition = new Vector2(mouseState.X, mouseState.Y);

if (mouseState.LeftButton == ButtonState.Pressed)
...

我知道在这里可以实现同样的事情,但我想偷懒并偷工减料(并希望生成更简单的代码)。所以,我的问题是双重的:

  1. 是否可以处理鼠标“手势”?
  2. 如果不是,是否有办法让 XNA 相信鼠标实际上是触摸的(Windows 8 的模拟器在这方面做得很好)。

最佳答案

我认为您真的不想结合触摸和鼠标手势。如果您的游戏使用多点触控,那么耦合它们几乎是不可能的。您必须在代码中分隔触摸样式。

但如果您真的坚持要耦合它们,您可以创建自己的包装类,将所有输入转换为您想要的内容,并将其传递给您的游戏对象。 IE。而不是使用 Mouse.GetState() -> MyGlobalInput.GetState() 来评估触摸或鼠标是否可用/已使用。

但请记住:用户期望触摸输入与鼠标输入不同,因为体验完全不同,因此这意味着这两种情况都有自己的逻辑。当你想使用鼠标或触摸时使用全局设置(或者当两者都可用时,让用户选择?)。有了它们自己的逻辑,您就可以更轻松地为鼠标和触摸构建手势。这也是一个架构 View /决策

编辑:另外,如果您指的是 monogame Microsoft.Xna.Framework.Input.Touch.GestureSample,它只需要一些与触摸 vector2 位置相同的 vector2 位置。您只需要对鼠标进行一些智能翻译即可触摸输入。

关于c# - 将触摸手势转换为鼠标手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22732881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com