C # UWP Изменить изображение только один раз с KeyDown - PullRequest
0 голосов
/ 10 марта 2019

Я делаю глупую игру для школьного проекта, и всякий раз, когда игрок движется вправо или влево, изображение меняется в зависимости от направления.Проблема в том, что изображение мигает, очевидно, потому что оно постоянно меняется для одного и того же изображения при нажатии.Я считаю, что мне нужно изменить изображение только при первом нажатии, но я не знаю, как это сделать.Любая помощь?TIA

Вот метод, который я использую для KeyDown:

private void MoveLeft(Image playerToMove)
    {
        double left = Canvas.GetLeft(playerToMove);
        left -= _step;
        playerToMove.Source = new BitmapImage(new Uri("ms-appx:///Assets/Characters/ShepherdLeft.png"));
        Canvas.SetLeft(playerToMove, left);
    }

1 Ответ

0 голосов
/ 11 марта 2019

Вам просто нужно вспомнить, в каком предыдущем направлении двигался игрок. Вот некоторый псевдокод, чтобы помочь с этим:

private enum Direction 
{
   Right,
   Left,
   Unknown
}

private Direction lastDirection = Direction.Unknown;

private void MoveLeft(Image playerToMove)
{
  if (lastDirection != Direction.Left)
  {
     playerToMove.Source = "ShepherdLeft.png";
  }
  lastDirection = Direction.Left;
}

private void MoveRight(Image playerToMove)
{
  if (lastDirection != Direction.Right)
  {
     playerToMove.Source = "ShepherdRight.png";
  }
  lastDirection = Direction.Right;
}
...