代码之家  ›  专栏  ›  技术社区  ›  Jacob Thomas

如何防止图像返回其原始位置?

  •  0
  • Jacob Thomas  · 技术社区  · 7 年前

    在我尝试自学C#的同时,我正在上一节课,我开始了一个平板手机应用程序。。我有三个游戏按钮,左、右和跳跃。这些按钮都实现了它们的预期功能,但由于某种原因,每当我点击一个按钮,图像(玩家又名“卡通”)就会跳回其原始位置。第二次单击同一个按钮时,动作正确执行,但当我切换按钮时,它再次跳转。

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

    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);
            }
        }
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Jakob    7 年前

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

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

    价值观,卡通。边缘顶部,卡通。边缘左等是图像当前指定的值。这也意味着以下行什么都不做:

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

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

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

    Button_Click_1 以此类推,因为它很难理解这个函数的作用。取而代之的是,将其命名为 Button_Click_Move_Right .