C# UWP 使用 KeyDown 仅更改一次图像
C# UWP Change image only once with 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);
}
你只需要记住玩家之前移动的方向。这里有一些伪代码可以帮助解决这个问题:
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;
}
我正在为学校项目制作一个愚蠢的游戏,每当玩家向右或向左移动时,图像都会随着方向改变。问题是图像明显闪烁,因为它在单击时一直为同一图像不断变化。我相信我只需要在第一次点击时更改图像,但我不知道该怎么做。有帮助吗? 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);
}
你只需要记住玩家之前移动的方向。这里有一些伪代码可以帮助解决这个问题:
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;
}