Silverlight анимация с постоянной скоростью - PullRequest
2 голосов
/ 15 мая 2011

Я хотел бы создать анимацию, где Длительность не установлена, но вместо этого она рассчитывается на основе настройки абсолютной скорости.Например, я хочу, чтобы анимация производилась со скоростью 100 пикселей в секунду, а продолжительность рассчитывается автоматически на основе значений «Кому» и «От».Если путь составляет 350 пикселей, анимация займет 3,5 секунды.

Duration.Automatic НЕ для этого.Также Animation.SpeedRatio - это совсем другое.

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

Что такое хорошее решение?Есть ли встроенное поведение для этого в Silverlight 4 или новее?

Воображаемый код:

DoubleAnimation ani = new DoubleAnimation();
ani.From = 0;
ani.To = 200;
ani.AbsoluteSpeed = "300 pixels / sec";
storyBoard1.Begin(); // now my animation will take 0.66 sec

1 Ответ

0 голосов
/ 16 мая 2011

Используйте код как: -

ani.Duration = new Duration(TimeSpan.FromSeconds(200 / myPixelsPerSecond))

Это не на всех "неуклюжих".

Если использование такого довольно прямого выражения заслуживает добавления нового свойства, что произойдет, если тот же подход будет применен к остальной части доступного API? Набор этих «полезных» свойств расширится до неуправляемых уровней. API будет сокрушен весом миллиардов подобных свойств, все из которых выполняют довольно простые выражения для установки истинных фундаментальных свойств.

Elegance (противоположность класте) имеет небольшой набор тщательно отобранных свойств, которые можно комбинировать миллионами способов с помощью простых выражений. Точно так же, как указано выше.

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