【发布时间】:2014-01-17 19:25:29
【问题描述】:
我前段时间问过this 一个关于在XNA 中检测拖动手势的问题。答案很好,我使用相同的方法来检测拖动和点击。但是,现在我想检测双击的第三个手势。我为此尝试了多种方法,但我似乎无法使用TouchCollection 获取代码来检测双击,因为我有效地尝试检测拖动后的第一个和第二个手势。这是我用于点击和拖动的代码:
foreach (TouchLocation touch in touchCollection)
{
switch (touch.State)
{
case TouchLocationState.Pressed:
if (CheckTouchLocation(touch.Position))
{
dragStart = touch;
}
else
{
dragStart = null;
}
break;
case TouchLocationState.Released:
DragRelease(touch); // Happens before I can detect double tap
break;
default:
continue;
结果,我恢复了最初的操作方式,因为这似乎默认支持双击:
TouchPanel.EnabledGestures =
GestureType.FreeDrag | GestureType.DragComplete | GestureType.DoubleTap | GestureType.Tap;
while (TouchPanel.IsGestureAvailable)
{
GestureSample gs = TouchPanel.ReadGesture();
switch (gs.GestureType)
{
case GestureType.DragComplete:
if (gs.Delta.LengthSquared() > DRAG_TOLERANCE)
{
if (gs.Delta.X != 0 || gs.Delta.Y != 0)
{
// Do something
}
}
break;
case GestureType.Tap:
// Do something else
break;
}
}
这似乎是一个不同的问题;如果我检测到freedrag,那么我会在发布之前收到该事件;当我如上所述检测到release 时,我没有收到任何事件。
有什么想法吗?
【问题讨论】: