Ich verwende eine DoubleAnimation, um die Angle-Eigenschaft einer RotationTransform zu antizipieren. Einige Male pro Sekunde muss ich die Rotationsrate als Antwort auf externe Daten ändern, so dass die Rotation im Laufe der Zeit beschleunigt und/oder verlangsamt wird. Ich tue dies derzeit durch einen Double verwenden, die für immer mit der Dauer X ,0-360,0 wiederholt, dann mehrmals pro Sekunde:Dynamische Änderung einer Rotationsanimation in WPF
- Ergreifen Sie einen neuen Wert von externen Daten
- Ändern Sie die Rate auf dem Double zu, dass Wert
- Re-übernehmen Sie die Double auf die Winkeleigenschaft wieder
Hinweis: ich fand, dass ich das ändern musste und von Eigenschaften auf der Animation auf den „aktuelle Winkel“ und „Stromwinkel + 360“ - Glück für mich RotationTransform hat keine Probleme mit Winkeln > 360 Grad - um ein erneutes Starten der Drehung aus dem Nullwinkel zu verhindern.
Meine Frage ist: Ist das vernünftig? Es scheint nicht so. Kontinuierliches Anwenden neuer DoubleAnimations auf die Angle-Eigenschaft bei einer Rotationstransformation scheint falsch zu sein - so wie ich WPF die Rotation animieren lasse, während I die Rotationsgeschwindigkeit selbst animiert.
Gibt es einen besseren Weg?
Das würde sehr geschätzt werden. – Bill
Danke, ich werde das nutzen können. Komisch, dass wir einen Methodenaufruf machen müssen (SetSpeedRatio), was bedeutet, dass ich die Geschwindigkeitsverhältnisänderung nicht mit einer anderen Animation animieren kann, alles in Xaml und allen; aber das sieht viel korrekter aus als neue Animationen die ganze Zeit anzuwenden, um den Effekt zu erzielen. Danke. – Bill
Diese Antwort war in unserem Fall am nützlichsten, aber es gibt einen wichtigen Unterschied, der es nicht funktionierte. zumindest mit WPF in WinRT. Die Methode SetSpeedRatio() hat nichts gemacht, also haben wir sie in die Eigenschaft SpeedRatio geändert und das hat den Trick gemacht. –