2014-03-29 123 views
2

下面是一些代码示例中,我要处理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模拟器做到这一点非常好)。

回答

0

我觉得你真的不想夫妇触摸和鼠标手势。如果你的游戏使用多点触控,那么连接它们几乎是不可能的。你将不得不在你的代码中分离触摸样式。

但是,如果你真的坚持把它们连接起来,你可以创建自己的包装类,它将所有的输入转换成你想要的并把它传递给你的游戏对象。即而不是使用Mouse.GetState() - > MyGlobalInput.GetState()来评估touch或mouse是否可用。

但请记住:用户期望触摸输入与鼠标输入不同,因为体验非常不同,所以这意味着两种情况都有自己的逻辑。当你想使用鼠标或触摸使用的全局设置(或当两个可用,让用户选择?)。拥有自己的逻辑将允许您更轻松地构建鼠标手势。这也是一个建筑视图/决定

编辑:另外,如果您指的是单人游戏Microsoft.Xna.Framework.Input.Touch.GestureSample,它只需要一些vector2位置与touch2位置相同。你只需要一些智能翻译鼠标来触摸输入。