如何防止我的图像返回到原来的位置?

How do I prevent my image from returning to its original position?

我有一个平台游戏 phone 应用程序的开端,因为我尝试自学 C# 结合 class 我正在学习..我有三个游戏按钮,左,右,和跳。这些按钮都执行了它们的预期功能,但出于某种原因,每当我单击一个按钮时,图像(播放器又名 "toon")都会跳回其原始位置。第二次单击同一个按钮时,操作正确执行,但是当我切换按钮时,它再次跳转。

最后一点,左和右除外,一旦我按下任一按钮并获得 return 原点跳转,左和右都将正常工作。

希望代码足够容易阅读。我觉得这应该是一个简单的修复,但我是新手。

namespace App1
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
        }

        //should probably be Event Args not routed
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Toon.Margin = new Thickness(62, Toon.Margin.Top - 15, 0,0);
            Toon.Margin = new Thickness(Toon.Margin.Left, Toon.Margin.Top, Toon.Margin.Right, Toon.Margin.Bottom);
        }

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            Toon.Margin = new Thickness(Toon.Margin.Left + 15, 102, 0, 0);
            Toon.Margin = new Thickness(Toon.Margin.Left, Toon.Margin.Top, Toon.Margin.Right, Toon.Margin.Bottom);
        }

        //moving left
        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            (Toon.Margin.Left,Toon.Margin.Top,Toon.Margin.Right,Toon.Margin.Bottom);
            Toon.Margin = new Thickness(Toon.Margin.Left - 15, 102, 0, 0);
            Toon.Margin = new Thickness(Toon.Margin.Left, Toon.Margin.Top, Toon.Margin.Right, Toon.Margin.Bottom);
        }
    }
}

您的代码存在的问题是您将绝对值与相对于您之前位置的值混合在一起。因此,例如,如果您想将图像向右移动,只需更改该值并保持所有其他值不变:

Toon.Margin = new Thickness(Toon.Margin.Left + 15, Toon.Margin.Top, Toon.Margin.Right, Toon.Margin.Bottom);

值,Toon.Margin.Top,Toon.Margin.Left等是图片当前赋值的值。这也意味着以下行什么都不做:

Toon.Margin = new Thickness(Toon.Margin.Left, Toon.Margin.Top, Toon.Margin.Right, Toon.Margin.Bottom);

它只是分配已有的图像值。如果要创建 "Jump" 函数,可以使用所有绝对值将图像设置到特定位置,如下所示:

Toon.Margin = new Thickness(0,0,0,0)    // replace the 0s with numbers you like

最后一点,您不应该将您的函数命名为 Button_Click_1 等等,因为这样很难弄清楚这个函数的作用。而是将其命名为 Button_Click_Move_Right.