这是我必须处理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)
...
我可以看到在这里可以实现相同的目标,但是我想变得懒惰并且切入一个角落(并且希望产生更简单的代码)。所以,我的问题有两个:
答案 0 :(得分:0)
我认为你真的不喜欢碰碰和鼠标手势。如果你的游戏使用多点触控,那么耦合它们几乎是不可能的。您必须在代码中分离触摸样式。
但是如果你真的坚持要把它们联系起来,你可以创建自己的包装类,将所有输入转换为你想要的并将其传递给你的游戏对象。即而不是使用Mouse.GetState() - > MyGlobalInput.GetState()将评估触摸或鼠标是否可用/
但请记住:用户期望触摸输入与鼠标输入不同,因为体验非常不同,因此这意味着两种情况都有自己的逻辑。当您想要使用鼠标或触摸时(或两者都可用时,让用户选择?),使用全局设置。拥有自己的逻辑将允许您更轻松地构建鼠标和触摸的手势。这也是一个架构视图/决策
编辑:另外,如果你指的是单一游戏Microsoft.Xna.Framework.Input.Touch.GestureSample
,它只需要一些与触摸向量2位置相同的向量2位置。您只需要一些智能翻译鼠标即可触摸输入。