Заставить программу ждать анимацию в цикле foreach

Так что у меня есть холст с различными изображениями. Мне нужно запустить анимацию для одного такого изображения в цикле foreach. Проблема в том, что программа запускает только последнюю анимацию цикла. Есть ли способ сделать цикл foreach приостановленным во время работы анимации или, по крайней мере, остановить переход foreach к следующему циклу, пока он не закончится. Предпочтительно я предпочел бы делать это в основном в коде, а не в xaml. Вот мой холст xmal код -

    <Canvas Name="AnimationCanvas" HorizontalAlignment="Left" VerticalAlignment="Top" Height="154" Width="292">
        <Image x:Name="img_ShipAttack" Panel.ZIndex="100" Height="91" Canvas.Left="25" Canvas.Top="28" Width="93" RenderTransformOrigin="0,0"/>
        <Image x:Name="img_ShipTarget"  Canvas.Top="28" Panel.ZIndex="100" RenderTransformOrigin="0.5,0.5" Width="93" Canvas.Left="173" Height="93"/>
        <Image x:Name="img_AttackBack" Height="472" Width="651" Panel.ZIndex="0" Canvas.Top="-82" Canvas.Left="-81"/>
        <Image x:Name="img_Pojectile" Panel.ZIndex="90" Height="153" Canvas.Left="-7" Canvas.Top="-3" Width="157" RenderTransformOrigin="0,0"/>
    </Canvas>

и вот мой метод анимации -

    public void Fire(Image target, double seconds)
    {
        var top = Canvas.GetTop(target);
        var left = Canvas.GetLeft(target);
        TranslateTransform trans = new TranslateTransform();
        target.RenderTransform = trans;
        DoubleAnimation anim = new DoubleAnimation(0, 140, TimeSpan.FromSeconds(seconds));

        anim.Completed += new EventHandler(CompletedAnimate);
        trans.BeginAnimation(TranslateTransform.XProperty, anim);
    }

и, наконец, хлопотная петля -

foreach(var weapon in weapons)
{
              try
                {
                    string weapons = "\\" + weapon.Name + ".png";
                    img_Pojectile.Source = new BitmapImage(new Uri(Directory.GetCurrentDirectory() + "\\Images" + weapons));
                }
                catch
                {
                    try
                    {
                        string weapons = "\\" + weapon.Type + ".png";
                        img_Pojectile.Source = new BitmapImage(new Uri(Directory.GetCurrentDirectory() + "\\Images" + weapons));
                    }
                    catch
                    {
                        img_Pojectile.Source = new BitmapImage(new Uri(Directory.GetCurrentDirectory() + "\\Images\\Default.png"));
                    }
                }

                Fire(img_Pojectile, 1.5);
}

как вы могли бы видеть, у меня есть обработчик события Completed в анимации, проблема в том, что он никогда не отключается, несмотря ни на что. Мой метод CompletedAnimation просто устанавливает bool в true в данный момент.

0 ответов

Другие вопросы по тегам