XNA wp7手势检测问题

时间:2013-05-21 07:48:16

标签: c# windows-phone-7 xna xna-4.0 gesture

我必须在我的应用程序中使用这两种输入(手势和简单触摸)。我遇到了问题。例如,我使用双击手势,在检测到之前我有一次检测到简单的触摸。这不是我所期望的那样,因为简单的触摸有其自己的逻辑,这带来了很多问题。与Drag相同的问题,在再次检测拖动之前,首先要求简单的触摸。如何在不处理简单触摸逻辑的情况下处理手势。 我试图这样做的方式:

TouchPanel.EnabledGestures = GestureType.DoubleTap | GestureType.VerticalDrag;
        while (TouchPanel.IsGestureAvailable)
        {
            isGesture = true;
            GestureSample gestureSample = TouchPanel.ReadGesture();
            switch (gestureSample.GestureType)
            {
                case GestureType.DoubleTap:

                    //some logic
                    break;
                case GestureType.HorizontalDrag:
                    //some logic
                    break;
            }
        }


        if (Consts.TouchCollection.Count == 1) 
        {
            var touch = Consts.TouchCollection[0]; //here needed only first touch

            switch (touch.State)
            {
                case TouchLocationState.Pressed:
                     //This one called first if used double tap

                    break;
                case TouchLocatiomState.Moved:
                    //smth
                    break;
                case TouchLocationState.Released:
                    //smth
                    break;
            }
        }

当使用双击手势时,此代码调用Pressed - >已发布 - > DoubleTap - >追问 我只想处理双击案例。怎么解决这个问题? 对我的英语感到抱歉,希望我的问题很明确。任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

为避免在处理手势后处理简单的触摸事件,请将触摸处理开始时设置的布尔标记添加到true,然后将其称为handleSimpleTouch。如果您处理手势,请将handleSimpleTouch设置为false。然后在处理简单触摸之前,检查handleSimpleTouch的值,如果是,则进行正常处理,否则不执行任何操作。

答案 1 :(得分:0)

我得出的结论是,唯一可行的方法是在不使用TouchPanel.EnabledGestures的情况下编写自己的输入。