Реверс анимации в Silverlight при нажатии кнопки или любом другом событии - PullRequest
1 голос
/ 13 июля 2010

Как бы я изменил двойную анимацию в Silverlight на событие? Например, допустим, у меня есть эллипс в качестве пути, и я перемещаю фигуру по этому пути в бесконечном цикле. Если я нажимаю кнопку, я хочу изменить направление вращения (по часовой стрелке <-> против часовой стрелки).

Чтобы быть более точным, я использую объект PathListBox, новый в SL4. Он имеет начальное свойство от 0 до 100% (двойное 0 - 1), которое будет помещать первый элемент в указанное место вдоль пути. Анимируя это свойство от 0 до 1 и от 1 до 0, я могу заставить объект вращаться по часовой стрелке и против часовой стрелки.

Допустим, у меня есть кнопка, и при нажатии кнопки я хочу изменить направление. Как мне это сделать? Я пытался приостановить анимацию и поменять местами значения анимации «Кому» и «От» и возобновить ее, но это вызывает скачок анимации. Таким образом, если его на эллипсе «3 часа», он переходит на «9 часов» и оттуда идет назад. Я попытался сделать что-то вроде установки для свойства CurrentTime раскадровки значения «Duration - CurrentTime», но это свойство, похоже, не устанавливается.

Итак, в заключение, есть ли идеи о том, как развернуть анимацию по требованию?

PS: я знаю, что есть PathListBoxUtils, который обеспечивает поведение прокрутки для PathListBox, но он не совсем реализует то, что я хочу. Или, другими словами, я хочу изменить PathListBoxUtils, чтобы иметь бесконечно вращающуюся, обратимую карусель вместо прокрутки по одному элементу за раз.

1 Ответ

1 голос
/ 13 июля 2010

Хорошо, у меня получилось, что я приостановил анимацию, поменяв значения «Кому» и «От», и использовал метод Seek для перемещения анимации вперед на заданную величину.Чтобы продвинуться вперед, мне нужно было «Duration.TimeSpan () - GetCurrentTime ()», но при доступе к Duration возникает исключение (операция недопустима для текущего состояния объекта).

На данный моментЯ просто жестко запрограммировал значение Duration для теста и, похоже, работает нормально.Я предполагаю, что для реальной реализации Duration может быть привязан к некоторому значению, и вычисление также может использовать это значение.

...