アニメーションを作成しようとしていますが、アニメーションが発生した後に一部のコードを実行する際に問題が発生します。アニメーションコードは次のとおりです...
public static void Friend(Canvas canvas)
{
foreach (var element in canvas.Children.OfType<Image>())
{
var elementName = Regex.Split(element.Name, "_");
if (elementName[0] == "friend")
{
var slideDown = new DoubleAnimation
{
From = Canvas.GetBottom(element),
To = Canvas.GetBottom(element) - element.Height,
Duration = new Duration(TimeSpan.FromSeconds(1)),
AutoReverse = true
};
element.BeginAnimation(Canvas.BottomProperty, slideDown);
slideDown.Completed += (sender, e) => Test(sender, e, element, canvas);
}
}
}
その後のイベントは…
var random = new Random();
element.Source = Core.StreamImage(Wardrobe.Friends[Wardrobe.RandomFriend()]);
Canvas.SetLeft(element, random.Next(0, (int)(canvas.ActualWidth - element.Width)));
// then reverse the previous animation.
ご覧のとおり、イベントが機能するためにはアニメーションのコンテキストを保持する必要がありますが、イベント ハンドラーはこれを許可していません。このコードを の直下に追加しようとしましたelement.BeginAnimation
が、途中で実行されます。
また、アニメーションの部分を個別の関数に分割しようとしましたが、関数が順番に実行されず、最後のセクションのみが再生されるため、1 つのオブジェクトに複数のアニメーションを設定することはできません。