MonoGame la lecture des gestes tactiles

Je suis en train d'écrire un jeu en utilisant le fantastique monogame cadre. Je vais avoir du mal à réagir à la touche entrée correctement. Lorsqu'un utilisateur fait glisser horizontalement ou verticalement, je veux effectuer une action une fois par glisser. Le problème, c'est le geste devient émises à plusieurs reprises pour chaque glisser. Voici mon code:

var gesture = default(GestureSample);

while (TouchPanel.IsGestureAvailable)
    gesture = TouchPanel.ReadGesture();

if (gesture.GestureType == GestureType.VerticalDrag)
{
    if (gesture.Delta.Y < 0)
        return new RotateLeftCommand(_gameController);

    if (gesture.Delta.Y > 0)
        return new RotateRightCommand(_gameController);
}

if (gesture.GestureType == GestureType.HorizontalDrag)
{
    if (gesture.Delta.X < 0)
        return new RotateLeftCommand(_gameController);

    if (gesture.Delta.X > 0)
        return new RotateRightCommand(_gameController);
}

J'ai déplacé l'ensemble de ce code dans un seul bloc pour les besoins de cet exemple. Le RotateRightCommand ou RotateLeftCommand qui est retourné est exécuté par le code appelant, qui fait tourner l'objet sur l'écran. L'ensemble de ce bloc de code est exécuté dans la mise à jour en boucle dans monogame. Je pense que je suis absent quelque chose en termes de réinitialisation de la saisie tactile et c'est pourquoi je me fais 3 ou 4 RotateCommands retourné pour une traînée. Ce que je fais mal?

OriginalL'auteur Kevin Holditch | 2013-02-02