-1

我已经在一个方法中启动了一个动画,然后如果它还没有完成,我将不得不停止它并立即完成它。

Vector diff = ...
DoubleAnimation aniX = new DoubleAnimation(diff.X, TimeSpan.FromSeconds(0.4));
DoubleAnimation aniY = new DoubleAnimation(diff.Y, TimeSpan.FromSeconds(0.4));

aniX并被aniY停止,如果他们还没有完成。

4

1 回答 1

1

我认为您应该使用XAML附加了一些代码Trigger来阻止它。以编程方式停止动画。您可以尝试使用Begin开始StoryboardStop停止它(不要使用BeginAnimation):

Storyboard st = new Storyboard();
Storyboard.SetTarget(aniX, yourObject);
Storyboard.SetTargetProperty(aniX, yourPropertyPath);
st.Children.Add(aniX);
Storyboard.SetTarget(aniY, yourObject);
Storyboard.SetTargetProperty(aniY, yourPropertyPath);
st.Children.Add(aniY);
//begin
st.Begin();
//stop
st.Stop();

注意:上面的代码假设您在过程代码(而不是 XAML 代码)中声明了所有的DoubleAnimations和。Storyboard我认为您应该在XAML代码中声明它们以使其更简洁,其中的许多类和内容WPF都针对 进行了优化XAML,因此有时您会觉得在过程代码中查看它们有点奇怪。

于 2013-11-02T15:58:37.483 回答