Windows phone 7 XNA保持屏幕以移动对象

Windows phone 7 XNA保持屏幕以移动对象,windows-phone-7,xna,Windows Phone 7,Xna,我正在使用xna处理windows phone游戏。。。我想通过拿着屏幕上的按钮来移动我的物体 我已经试过了,但它只显示轻拍手势 foreach (GestureSample gestureSample in input.Gestures) { switch (gestureSample.GestureType) { ca

我正在使用xna处理windows phone游戏。。。我想通过拿着屏幕上的按钮来移动我的物体

我已经试过了,但它只显示轻拍手势

          foreach (GestureSample gestureSample in input.Gestures)
                {
                    switch (gestureSample.GestureType)
                    {
                      case GestureType.Hold:
                      case GestureType.Tap:
                      Point tapLocation = new Point((int)gestureSample.Position.X, (int)gestureSample.Position.Y);
                      if (rightRectangle.Contains(tapLocation))
                                {
                                        rightTouched = true;
                                        player.Catapult.CurrentState = CatapultState.MoveRight;
                                        playerPositionUpdate.X += 20;
                                        player.catapultPosition.X += 20;
                                        player.Catapult.catapultPosition.X += 20;
                                        player.Catapult.projectilePositionUpdate.X += 20;
                                        if (player.Catapult.catapultPosition.X == player.Catapult.catapultPosition.X + 20)
                                            rightTouched = false;
                                        CenterOnPosition(player.Catapult.Position - catapultCenterOffset);
                                    }
                       break;
                      }
                 }

手势是离散的事件。您希望每帧轮询触摸面板的状态。为此,请使用
TouchPanel.GetState()


有关信息,请参见。

如上所述,您不应为此目的使用
GestureSample
,因为使用dragcomplete和freedrag有点棘手。相反,您应该使用
TouchPanel.GetState()


我想你理解这个想法。

hmmm它不起作用了,我试着像代码中的链接一样使用它。。嗯,如果我用这行代码来获得我的触摸位置,对吗?“点接触点=新点((int)tl.Position.X,(int)tl.Position.Y);”并使用“if(rightRectangle.Contains(touchPoint))”?哦,我忘了提到,我的代码中还有自由拖动、拖动完成、轻弹、捏手势。。。。我想这和。。。因为当我试图在屏幕上按住并移动手指时,它看起来像是触发了自由拖动手势(我的相机跟着我的手指),然后暂时禁用手势识别,看看是否与此有关。
TouchCollection touchCollection = TouchPanel.GetState();
        if (touchCollection.Count == 1)
        {
            var touch = touchCollection[0]; 
            switch (touch.State)
            {
                case TouchLocationState.Pressed:
                    if (rectangle.Contains((int) touch.Position.X, (int)  touch.Position.Y))
                    {
                        isMoving = true;
                    }
                    break;
                case TouchLocationState.Moved:
                    if (isMoving)
                    {
                        TouchLocation prevLocation;
                        touch.TryGetPreviousLocation(out prevLocation);
                        if (prevLocation.Position != touch.Position)
                        {
                            Vector2 delta = touch.Position - prevLocation.Position;
                            //offset your rectangle on delta
                        }
                    }
                    break;
                case TouchLocationState.Released:
                    isMoving = false;
                    break;
            }
        }
        else if (touchCollection.Count == 2)
        {
            var touchOne = touchCollection[0];
            var touchTwo = touchCollection[1];
            //pinch logic here
        }