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

标签 c# xna windows-runtime monogame gestures

这是我必须处理 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/

相关文章:

c# - 高架赛车游戏中的汽车/车辆在拐角处漂移

c# - WinRT - MessageDialog.ShowAsync 将在我的自定义类中抛出 UnauthorizedAccessException

c# - 如何从 RGB 代码中获取画笔?

c# - 如何禁用特定的 usb 端口 com2 c# 64 位

c# - 更改 PrinterSettings.Copies 不起作用

c# - 无法在 Visual C# 2010 Express 中访问构建配置管理器或构建配置

c# - FTP上传结束时不一定总能获得226 Transfer OK

c# - FromBody 值取空

c# - .NET Core Web API 作为 Azure 应用服务上的虚拟应用程序

xna - 3D 角色/模型创建者