Mehrere Animationen in einem Storyboard an der gleichen Zeit?
Erstellte ich ein paar ColorAnimations und möchten Sie zur gleichen Zeit laufen (ob Sie laufen synchronen egal).
Leider nur einer von Ihnen läuft.
storyboard = new Storyboard();
//Animation Auditorium
ColorAnimation SpotLightAnimation = new ColorAnimation();
SpotLightAnimation.To = Color.FromArgb(1, Convert.ToByte(random.Next(0, 255)), Convert.ToByte(random.Next(0, 255)), Convert.ToByte(random.Next(0, 255)));
SpotLightAnimation.Duration = TimeSpan.FromSeconds(3);
SpotLightAnimation.Completed += new EventHandler(storyboard_Completed);
this.RegisterName("MySpotlight", karte.SpotLightAuditorium);
Storyboard.SetTargetName(SpotLightAnimation, "MySpotlight");
Storyboard.SetTargetProperty(SpotLightAnimation, new PropertyPath(SpotLight.ColorProperty));
storyboard.Children.Add(SpotLightAnimation);
//Animation Wohnzimmer
ColorAnimation SpotLightWohnzimmerAnimation = new ColorAnimation();
SpotLightWohnzimmerAnimation.To = Color.FromArgb(1, Convert.ToByte(random.Next(0, 255)), Convert.ToByte(random.Next(0, 255)), Convert.ToByte(random.Next(0, 255)));
SpotLightWohnzimmerAnimation.Duration = TimeSpan.FromSeconds(3);
SpotLightAnimation.Completed += new EventHandler(storyboard_Completed);
this.RegisterName("MySpotLightWonzimmer", karte.SpotLightWohnzimmer);
Storyboard.SetTargetName(SpotLightWohnzimmerAnimation, "MySpotLightWonzimmer");
Storyboard.SetTargetProperty(SpotLightWohnzimmerAnimation, new PropertyPath(SpotLight.ColorProperty));
storyboard.Children.Add(SpotLightWohnzimmerAnimation);
storyboard.Begin(this);
}
void storyboard_Completed(object sender, EventArgs e)
{
(storyboard.Children[0] as ColorAnimation).To = Color.FromArgb(1, Convert.ToByte(random.Next(0, 255)), Convert.ToByte(random.Next(0, 255)), Convert.ToByte(random.Next(0, 255)));
storyboard.Begin(this);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Neue Antwort :
Ich denke, dass die bereits eingeleiteten animation kann stören, und Sie können versuchen, diese :
Starten Sie die animation mit den unten snippet :
diese.BeginStoryboard(stboard, HandoffBehavior.SnapshotAndReplace, true);
Ansonsten hat jeder animation Arbeit separetly ?
Auch ich merke, dass Sie abonnieren animation abgeschlossen, statt der Anmeldung nur das storyboard : warum ?
Alte Antwort :
Hallo,
Können Sie den gesamten code ?
Auch : SpotLightWohnzimmerAnimation ist eine Klasse ' name oder eine Instanz ?
Ich in der Regel befolgen Sie diese zum starten der animation aus dem code : http://blog.lexique-du-net.com/index.php?post/2009/07/07/CREATE%2C-LAUNCH-and-CONTROL-a-WPF-animation-FROM-CODE
@Brandon: ich denke, er wird die Animation etwas nicht deklariert in seiner XAML wie ein Scheinwerfer... Und der Erstellung von Animationen ermöglichen Ihnen mehr Flexibilität durch die Anpassung alle Parameter zur Laufzeit und nicht die design-Zeit...1.
Könnten Sie ein paar mehr Infos??? Auch, gibt es einen Grund, warum erklären Sie sich das storyboard von in C#? Normalerweise, wenn ich gehe, üeber animieren mehrere Eigenschaften Farbe, die ich etwas tun, die der folgenden ähnelt:
Und da Sie die " x:Name in dem storyborad, können Sie immer wählen, um es zu starten von C# - code durch zu gehen:
Storyboard sb = diese.FindResource("MyCoolStoryboard") als Storyboard;
sb.Begin();