Я анимирую позицию Stackpanel
от правого края окна до левого края.Я Pause
анимация в течение 5 секунд и выполнить некоторые операции, а затем Resume
это снова.Анимация начинается с события нажатия кнопки.Проблема в том, что когда я впервые нажимаю кнопку, анимация работает нормально, Stackpanel
перемещается, затем приостанавливается и возобновляется.Но когда я снова нажимаю кнопку, анимация начинается, но она никогда не останавливается.Только первая анимация приостанавливается после первой анимации, когда срабатывает событие нажатия кнопки i, и анимация запускается, анимация не приостанавливается.Зачем ?
<Storyboard x:Key="CarAnimateStoryboard">
<DoubleAnimation
From="{Binding ActualWidth, ElementName=RoadPanel}" To="0" Storyboard.TargetName="TranslateImage"
Storyboard.TargetProperty="X"
Duration="0:0:10" />
</Storyboard>
Код
MediaPlayer CarSound = new MediaPlayer();
private Storyboard sB;
private DispatcherTimer AnimationTimer = new DispatcherTimer();
private void Animate_OnStart()
{
sB = (Storyboard) FindResource("CarAnimateStoryboard");
CarStackPanel.Visibility = Visibility.Visible;
sB.Completed += Sb_Completed;
sB.Begin();
CarSound.Open(new Uri(FilePath + "/CarDrive.wav"));
CarSound.Play();
AnimationTimer.Tick += AnimationTimer_Tick_OverTimeCheck;
AnimationTimer.Interval = new TimeSpan(0, 0, 5);
AnimationTimer.Start();
}
private void Sb_Completed(object sender, EventArgs e)
{
CarStackPanel.Visibility = Visibility.Collapsed;
sB.SkipToFill();
sB.Remove();
}
private void AnimationTimer_Tick_OverTimeCheck(object sender, EventArgs e)
{
if (sB.GetIsPaused())
{
sB.Resume();
PopRoadCarDetails.IsOpen = false;
CarSmoke.Visibility = Visibility.Collapsed;
CarSound.Open(new Uri(FilePath + "/CarDrive.wav"));
CarSound.Play();
AnimationTimer.Stop();
return;
}
sB.Pause();
PopRoadCarDetails.PlacementTarget = CarStackPanel;
PopRoadCarDetails.IsOpen = true;
CarSmoke.Visibility = Visibility.Visible;
}