使用Horizo​​ntalDrag时,GestureSample.Delta不正确

时间:2011-03-19 17:23:09

标签: windows-phone-7 xna

我想通过保持在gestureSample对象中返回的delta的总和来保持用户拖动屏幕的像素数量,但这些delta似乎不一致:

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);
    }
}

上面的代码显示以下内容:

  • 拖动:0 - delta:{X:0 Y:0} pos; {X:692 Y:414}
  • 拖动:-4 - delta:{X:-4 Y:0} pos; {X:683 Y:415}
  • 拖动:-6 - delta:{X:-2 Y:0} pos; { X:676 Y:415}
  • 拖动:-8 - delta:{ X:-2 Y:0} pos; { X:669 Y:415}
  • 拖动:-11 - delta:{X:-3 Y:0} pos; {X:658 Y:415}
  • 拖动:-15 - delta:{X:-4 Y:0} pos; {X:644 Y:415}

GestureSample的绝对位置移动了-7像素,但delta仅报告-2!

这在仿真器上作为真正的WP7设备发生。我对delta的解释是否错误,我不应该依赖它吗?

1 个答案:

答案 0 :(得分:2)

我发现了这个问题:我没有处理从TouchPanel读取的所有手势。在1个游戏周期中,可以并且将记录多个Horizo​​ntalDrag手势;它们不会合并成1个手势。

解决方案:确保查看所有GestureSamples。