首页 文章

动画会冻结它动画的 Value 吗?

提问于
浏览
0

我是静止的,而内部的白色盒子(SwipeBar)就是滑块 . OnTouchDown 的滑块图片,我将bool IsDragging 设置为true . OnTouchMove ,我通过调整左边距来移动图像(可能有更好的方法,但这有效) . 这是 OnTouchMove 代码:

private void SwipeBar_TouchMove(object sender, TouchEventArgs e) {
        if (IsDragging) {
            int x = (int)e.GetTouchPoint(SwipeBack).Position.X;
            int left = (int)(x - SwipeBar.ActualWidth / 2);
            left = Math.Max(15, left);
            left = Math.Min(left, (int)(SwipeBack.ActualWidth - 15 - SwipeBar.ActualWidth));
            Thickness m = SwipeBar.Margin;
            m.Left = left;
            SwipeBar.Margin = m;
        }
    }

在我的 OnTouchUp 事件中,我将 IsDragging 设置为false并运行动画以将SwipeBar返回到静止的左手位置(返回15的边距),这是代码:

private void SwipeBar_TouchUp(object sender, TouchEventArgs e) {
        IsDragging = false;
        ThicknessAnimation slideBack = new ThicknessAnimation();
        slideBack.From = SwipeBar.Margin;
        Thickness to = SwipeBar.Margin;
        to.Left = 15;
        slideBack.To = to;
        ExponentialEase ease = new ExponentialEase();
        ease.Exponent = 7;
        slideBack.EasingFunction = ease;
        SwipeBar.BeginAnimation(Image.MarginProperty, slideBack);
    }

我遇到的问题是,在动画第一次运行后,我无法再操纵SwipeBar的边距来做另一张幻灯片 . 我是WPF的新手,尤其是WPF动画,但我相信由于动画,我无法在第一个动画后更改边距 . 我已经尝试给动画一个持续时间,但即使在时间到期(或重试计数)之后,仍然无法修改边距 .

1 回答

相关问题