C# 将触摸手势转换为鼠标手势
下面是一些我必须处理tpouch手势的代码示例:C# 将触摸手势转换为鼠标手势,c#,xna,windows-runtime,monogame,gestures,C#,Xna,Windows Runtime,Monogame,Gestures,下面是一些我必须处理tpouch手势的代码示例: public void HandleInput() { TouchPanel.EnabledGestures = GestureType.FreeDrag | GestureType.DragComplete | GestureType.DoubleTap | GestureType.Tap; while (TouchPanel.IsGestureAvailable) { GestureSa
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)
...
我可以看出,在这里实现同样的目标是可能的,但我希望自己能偷懒,走捷径(并希望生成更简单的代码)。因此,我的问题有两个:
我想你真的不想把触摸和鼠标手势结合起来。如果您的游戏使用多点触控,那么耦合它们几乎是不可能的。您必须在代码中分离触摸样式 但是如果你真的坚持耦合它们,你可以创建你自己的包装类,将所有的输入转换成你想要的,并传递给你的游戏对象。即,不使用Mouse.GetState()->MyGlobalInput.GetState(),它将评估触摸或鼠标是否可用/使用 但请记住:用户希望触摸输入与鼠标输入不同,因为体验是完全不同的,因此这两种情况都有各自的逻辑。当您想要使用鼠标或触摸时(或者当两者都可用时,让用户选择?),请使用全局设置。有了自己的逻辑,你就可以更容易地建立鼠标和触摸的手势。这也是一个架构视图/决策 编辑:另外,如果您指的是monogame
Microsoft.Xna.Framework.Input.Touch.GestureSample
,则它只采用一些与Touch vector2位置相同的矢量2位置。你只需要一些聪明的翻译鼠标触摸输入