#c# #xaml #uwp #keydown
#c# #xaml #uwp #keydown
Вопрос:
Я создаю глупую игру для школьного проекта, и всякий раз, когда игрок перемещается вправо или влево, изображение меняется в соответствии с направлением. Проблема в том, что изображение мигает, очевидно, потому что оно постоянно меняется для одного и того же изображения при нажатии. Я считаю, что мне нужно было бы изменить изображение только при первом нажатии, но я понятия не имею, как это сделать. Любая помощь? 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:
Вам просто нужно запомнить, в каком направлении ранее перемещался проигрыватель. Вот некоторый псевдокод, который поможет с этим:
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;
}
Комментарии:
1. В итоге я создал основной класс для проигрывателя с 2 классами с указаниями и изменил видимость 🙂 Но ваш способ проще 🙂 ty double left = Холст. getLeft (перемещение игрока. PlayerLeftAvatar()); playerToMove. PlayerLeftAvatar().Видимость = Видимость. Свернуто; playerToMove. PlayerRightAvatar().Видимость = Visibility.Visible; слева = _step; Холст. SetLeft (игрок перемещается. PlayerLeftAvatar(), слева); Холст. SetLeft (игрок перемещается. PlayerRightAvatar(), слева);