我在xna游戏的update()部分有这个:
while (TouchPanel.IsGestureAvailable)
{
GestureSample gs = TouchPanel.ReadGesture();
switch (gs.GestureType)
{
case GestureType.Flick:
_GameMap.GameCamera.Translate(new Vector2(-gs.Delta.X/2, 0));
//moves the camera by this amount
break;
}
}
但不出所料,当我轻弹没有滚动(如谷歌地球或愤怒的小鸟)时,它只是一个开始和结束。如何在轻弹中实现滚动?
答案 0 :(得分:5)
来自Windows Phone 7 Game Development:
当用户释放与...的联系时,会触发轻弹手势 screen(...)这对于启动动态滚动非常有用, 在朝向该方向释放之后,对象继续移动 用户一直在移动。
如果此处所述的动态滚动是您想要的,那么在检测到轻弹手势时,保存Delta,并在每个帧上移动该Delta(经过一些常数)并将其减少一定量。这将导致屏幕逐渐移动和减速。
如果要按字面意思理解文本,则仅在用户发布联系人时报告该手势,这意味着在联系期间联系页面将不会移动。在这种情况下,您还需要查找某种拖拽手势(可能是FreeDrag)并在拖动过程中开始移动屏幕。