Używam funkcji DoubleAnimation do anamowania właściwości Angle obiektu RotationTransform. Kilka razy na sekundę muszę zmienić szybkość rotacji w odpowiedzi na dane zewnętrzne, tak aby obrót przyspieszył i/lub spowalniał (płynnie) z czasem. Jestem obecnie robi to za pomocą DoubleAnimation który powtarza się zawsze od 0,0 do 360,0 z czasem trwania X, a następnie kilka razy na sekundę:Dynamiczna zmiana animacji rotacji w programie WPF
- porwać nowej wartości z danymi zewnętrznymi
- Modyfikuj stawkę na DoubleAnimation temu wartość
- ponownie ubiegać się DoubleAnimation do nieruchomości angle ponownie
Uwaga: znalazłem, że muszę zmienić do i od nieruchomości na animację „aktualny kąt” i „aktualny kąt + 360” - na szczęście dla mnie RotationTransform nie ma problemu z kątami > 360 stopni - aby zapobiec ponownemu uruchomieniu obracania od kąta zerowego.
Moje pytanie brzmi: czy to jest uzasadnione? Nie wydaje się tak. Ciągłe stosowanie nowych DoubleAnimations do właściwości Angle w transformacji rotacji wydaje się błędne - coś w rodzaju, że pozwalam WPF animować rotację, podczas gdy I animuję prędkość obrotową.
Czy istnieje lepszy sposób?
To byłoby bardzo docenione. – Bill
Dzięki, będę mógł z tego skorzystać. Zabawne, że musimy wykonać wywołanie metody (SetSpeedRatio), co oznacza, że nie mogę animować zmiany stosunku prędkości z inną animacją, wszystko w Xaml i wszystkich; ale to wygląda o wiele bardziej poprawnie niż stosowanie nowych animacji przez cały czas, aby uzyskać efekt. Dziękuję. – Bill
Ta odpowiedź była najbardziej przydatna w naszym przypadku, ale jest jedna ważna różnica, która nie sprawdziła jej. przynajmniej z WPF w WinRT. Metoda SetSpeedRatio() nie zrobiła nic, więc zmieniliśmy ją na właściwość SpeedRatio i to wystarczyło. –