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

时间:2017-09-01 23:07:59

标签: c# win-universal-app

我有一个平台手机应用程序的开头,因为我尝试自学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 个答案:

答案 0 :(得分:0)

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

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);

它只是分配已有的图像值。如果要创建“跳转”功能,可以使用所有绝对值将图像设置为特定位置,如下所示:

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

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