Ich möchte meine Animation mehrmals wiederholen, jedes Mal, wenn die Eigenschaft eines Ziels mit ausgelöst oder Animation beendet würde.Was ist los mit meinem wpf Animationscode
Aber die Animation funktioniert nur zum ersten Mal.
Um das zu vereinfachen, lasse ich einfach ein Rechteck in einem Canvas 10 Mal von 0 auf 400 bewegen. Der Code wird befolgt.
Ich habe Fragen wie 'wpf Wiederholungsanimation', die seek()
Methode oder rect.BeginAnimation(property, null)
vorgeschlagen vorgeschlagen, aber funktioniert nicht für mich.
private void init()
{
Rectangle rect = new Rectangle();
this.RegisterName("rect", rect);
rect.Height = 100;
rect.Width = 50;
rect.Fill = Brushes.LightBlue;
Canvas.SetTop(rect, 0);
Canvas.SetLeft(rect, 0);
myCanvas.Children.Add(rect);
TargetAnimation(0);
}
private void TargetAnimation(int i)
{
DoubleAnimation da = new DoubleAnimation();
da.From = 0;
da.To = 400;
da.Duration = TimeSpan.FromSeconds(5);
Storyboard.SetTargetName(da, "rect");
Storyboard.SetTargetProperty(da, new PropertyPath(Canvas.LeftProperty));
Storyboard storyboard = new Storyboard();
storyboard.Children.Add(da);
storyboard.Completed += Storyboard_Completed;
storyboard.Begin(this);
}
private void Storyboard_Completed(object sender, EventArgs e)
{
if (i < 10)
TargetAnimation(++i);
else
return;
}
Warum Sie übergeben ein Argument 'I' zu 'TargetAnimation' Methode? Sie verwenden es nicht ... – Pikoh
Warum verwenden Sie nicht das 'da.RepeatBehavior = RepeatBehavior.Forever;'? –
Es tut mir leid, dass ich es nicht klar gemacht habe. "Ich" ist ein globales Argument. @ Pikoh – HDQ