Hallo,
bin komplett neu in Silverlight, hoffe hier im Forum Hilfe zu finden, falls mir jemand noch andere Foren für Silverlight/C#-Fragen nennen kann bin ich dankbar
Mein Ziel ist es eine Anwendung mit Silverlightinterface komplett in C# zu schreiben.. möglichst wenig Dinge sollen in die xaml-Dateien.
Nun zur Frage:
Ich habe eine Klasse für ein Partikel erstellt
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| public class Particle { private Point m_Position; private Point m_Speed; private Color m_Color; private Ellipse m_ellipse; private Canvas m_Parent;
public SoundParticle(Canvas fParent) { m_Parent = fParent; m_ellipse = new Ellipse(); m_Parent.Children.Add(m_ellipse); } } |
Nun sollen in einer Schleife oder in einem Timer alle Objekte bewegt werden.
Dafür existiert die Klassen-Funktion
Move();
In dieser Funktion wird die Ellipse an die entsprechende Position des Partikels gesetzt.
Mein Frage ist wie ich das am Besten (im Sinne von Silverlight) lösen kann.
System.Threading.Thread habe ich bereits probiert, bekomme jedoch beim Zugriff auf z.B. m_Position eine "Invalid Cross-Thread access"-Violation. Also keine Threads
Es gibt noch "Animation, Storyboard, Timeline, div. Timer", alles ein bisschen viele Möglichkeiten für meinen Geschmack...
Aktueller Versuch (funktioniert nicht)
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| MovingParticles = new DoubleAnimation(); MovingParticles .Duration = new TimeSpan(0, 0, 0, 1, 1); MovingParticles .From = 0; MovingParticles .To = 1; ParticleStoryboard = new Storyboard(); ParticleStoryboard .Children.Add(MovingParticles ); ParticleStoryboard .Completed += Move |
Für Hilfe bin ich sehr dankbar
Danke im Voraus