Windows phone 7 XNA保持屏幕以移动对象
我正在使用xna处理windows phone游戏。。。我想通过拿着屏幕上的按钮来移动我的物体 我已经试过了,但它只显示轻拍手势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
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
}