Как сделать так, чтобы два объекта путешествовали на разном расстоянии на одной скорости - PullRequest
0 голосов
/ 26 марта 2012

Используя Silverlight и раскадровку, как сделать так, чтобы два объекта путешествовали на разное расстояние с одинаковой скоростью?Прямо сейчас, чтобы оживить мои элементы управления, я использую код ниже.Однако если одному элементу управления необходимо пройти 100 пикселей, а другому - 1000 пикселей, анимация не будет работать с той же скоростью.Тот, у которого расстояние прохождения 100 пикселей, намного медленнее.Это связано с продолжительностью анимации, но я должен установить ее, если я хочу, чтобы анимация запускалась.

Есть ли другой способ сделать это и убедиться, что независимо от расстояния, которое должен пройти элемент управления, скорость движения будет одинаковой?

var easefall = new QuadraticEase();
easefall.EasingMode = EasingMode.EaseIn;

Storyboard storyboard = new Storyboard();
var animation = new DoubleAnimation();
animation.To = // 10, 50, 100...
animation.Duration = TimeSpan.FromSeconds(0.50);
animation.EasingFunction = easefall;

1 Ответ

1 голос
/ 27 марта 2012

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

double rate = 0.05; //speed per unit of one change
double duration = distance * rate; //i'll assume your distance is an input from somewhere

var easefall = new QuadraticEase();
easefall.EasingMode = EasingMode.EaseIn;

Storyboard storyboard = new Storyboard();
var animation = new DoubleAnimation();
animation.To = // 10, 50, 100...
animation.Duration = TimeSpan.FromSeconds(duration);
animation.EasingFunction = easefall;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...