Обновление скорости / продолжительности вращения в раскадровке - PullRequest
2 голосов
/ 23 марта 2012

Я пытаюсь повернуть UserControl (изображение) и программно отрегулировать скорость вращения.

Итак, сначала я определил раскадровку, которая вращает колесо:

 <Storyboard x:Name="wheelRotation">
            <DoubleAnimation
                x:Name="leftRotation"
                Storyboard.TargetName="leftWheel"
                Storyboard.TargetProperty="(leftWheel.RenderTransform).(RotateTransform.Angle)"
                From="360" To="0" Duration="0:0:2"
                AutoReverse="False"
                RepeatBehavior="Forever">
            </DoubleAnimation>
</Storyboard>

Далее я пытаюсь программно обновить Длительность вращения, корректируя «скорость» каждые 2 секунды:

leftRotation.Duration = speed1;

На первый взгляд, это похоже на работу, особенно если изменения в скорости небольшие. Но если скорость увеличивается, то при каждом обновлении колесо, кажется, регулирует свой угол немного больше, вызывая «икоты». (если скорость увеличивается, например, от 2 с до 4 с в течение 2-минутного периода, колесо кажется прыгает вперед на 1-2 градуса в конце, если оно уменьшается во времени, колесо поворачивается немного назад при каждом обновлении)

Я также пытался реализовать поведение с использованием фиксированной длительности и обновлять SpeedRatio, но это тоже не помогло, эти корректировки все же произошли.

Я довольно новичок в Silverlight / Windows Phone, поэтому у меня нет более глубокого понимания того, как это работает внутри, я был бы признателен, если бы кто-нибудь дал мне подсказку, как решить это. Спасибо ...

1 Ответ

0 голосов
/ 23 марта 2012

Я не уверен, стоит ли менять свойства Storyboard / DoubleAnimation, когда они запущены.Я бы удалил RepeatBehavior="Forever", чтобы анимация запускалась один раз, вместо этого обрабатывая событие Storyboard.Completed для повторного запуска анимации каждый раз, когда она останавливается.Затем вы можете отрегулировать продолжительность до ее повторного запуска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...