GestureSample.Delta неверно при использовании HorizontalDrag - PullRequest
1 голос
/ 19 марта 2011

Я думал о том, чтобы сохранить количество пикселей, которые пользователь перетаскивал на экране, сохраняя сумму дельты, возвращенной в объекте gestSample, но эти дельты кажутся непоследовательными:

EnabledGestures = GestureType.HorizontalDrag | GestureType.DragComplete;

foreach (GestureSample gestureSample in input.Gestures)
{
    if (gestureSample.GestureType == GestureType.HorizontalDrag)
    {      
         _dragOffset += gestureSample.Delta.X;
         System.Diagnostics.Debug.WriteLine("drag: " + _dragOffset + " - delta: " + gestureSample.Delta + " pos; " + gestureSample.Position);
    }
}

Приведенный выше код отображает следующее:

  • drag: 0 - delta: {X: 0 Y: 0} pos; {X: 692 Y: 414}
  • drag: -4 - delta: {X: -4 Y: 0} pos; {X: 683 Y: 415}
  • drag: -6 - delta: {X: -2 Y: 0} pos; { X: 676 Y: 415}
  • перетаскивание: -8 - дельта: { X: -2 Y: 0} поз; { X: 669 Y: 415}
  • drag: -11 - delta: {X: -3 Y: 0} pos; {X: 658 Y: 415}
  • drag: -15 - delta: {X: -4 Y: 0} pos; {X: 644 Y: 415}

Абсолютная позиция GestureSample смещена на -7 пикселей, но дельта сообщает только -2!

Это происходит как на эмуляторе, так и на настоящем устройстве WP7. Является ли моя интерпретация дельты неверной, и не следует ли мне полагаться на нее?

1 Ответ

2 голосов
/ 19 марта 2011

Я обнаружил проблему: я не обрабатывал все жесты, считанные с сенсорной панели. В течение одного игрового цикла несколько жестов HorizontalDrag могут и будут записаны; они не будут объединены в 1 жест.

Решение: обязательно просмотрите ВСЕ GestureSamples.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...