Двигайтесь с предметом, пока палец не будет разжат или не раскрыт - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть это:

private void HandleTouchInput()
{
  while (TouchPanel.IsGestureAvailable)
  {
  // read the next gesture from the queue
  GestureSample gesture = TouchPanel.ReadGesture();
  switch (gesture.GestureType)
  {
     case GestureType.Hold:
     // left
     if (gesture.Position.X < 100 && gesture.Position.Y < 100)
     {
        ship.Position.X -= 5;
     }
     break;
   }
}

(HandleTouchInput используется в методе обновления)

Как я могу повторять код в переключателе до тех пор, пока «палец» не будет развернут (снят) с экрана?Я не хочу менять позицию только один раз, я хочу изменить ее, чтобы пользователь продолжал нажимать на точную позицию.Спасибо

1 Ответ

0 голосов
/ 03 ноября 2011

Как предложил NitWit, вам нужно использовать необработанный ввод, например, так:

protected override void Update(GameTime gameTime)
{
    // TouchPanel.GetState() should be called only once per frame
    TouchCollection touchCollection = TouchPanel.GetState();

    HandleInput(touchCollection);
}

private void HandleInput(TouchCollection touchCollection)
{
    if (touchCollection.Count == 0)
    {
        return;
    }

    TouchLocation touchLocation = touchCollection[0];
    Vector2 touchPosition = touchLocation.Position;

    switch (touchLocation.State)
    {
        case TouchLocationState.Moved:
        case TouchLocationState.Pressed:
        case TouchLocationState.Released:
            if (touchPosition.X < 100 && touchPosition.Y < 100)
            {
                ship.Position.X -= 5;
            }

            break;

        default:
            break;
    }
}
...