注册两个FreeDrag手势

时间:2012-04-19 10:47:50

标签: c# windows-phone-7 xna gestures

如何同时阅读两个手势。我目前正在开发一款游戏,其中两名玩家应该使用FreeDrag手势。

现在发生的事情是:

当玩家A开始时,他正在拖动它完美无缺。如果玩家B然后也开始了它的FreeDrag手势,则TouchPanel.ReadGesture();不会注册它直到玩家A的手势结束。

我使用以下代码:

Initialize()

TouchPanel.EnabledGestures = GestureType.FreeDrag;

Update()

if (TouchPanel.IsGestureAvailable)
{
    GestureSample touch = TouchPanel.ReadGesture();

    if (touch.GestureType == GestureType.FreeDrag)
    {
        if (touch.Position.Y > GraphicsDevice.Viewport.Height/2)
        {
            //logic Player A here
        }
        else
        {
            //logic Player B there
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您在MSDN文档中有一个示例:

http://msdn.microsoft.com/en-us/library/ff827740.aspx

// get any gestures that are ready.
while (TouchPanel.IsGestureAvailable)
{
    GestureSample gs = TouchPanel.ReadGesture();
    switch (gs.GestureType)
    {
        case GestureType.VerticalDrag:
            // move the poem screen vertically by the drag delta
            // amount.
            poem.offset.Y -= gs.Delta.Y;
            break;

        case GestureType.Flick:
            // add velocity to the poem screen (only interested in
            // changes to Y velocity).
            poem.velocity.Y += gs.Delta.Y;
            break;
    }
}

答案 1 :(得分:0)

你不能,FreeDrag不是多点触控手势,你应该尝试使用TouchLocationTouchCollection来检测多点触控。遗憾的是,您无法使用在TouchPanel.EnabledGestures中声明的默认手势。