StoryBoard анимация паузы не работает Wpf - PullRequest
0 голосов
/ 24 января 2019

Я анимирую позицию 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;

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...