как перевести объект из его текущего положения в другое?(последовательные переводы) - PullRequest
0 голосов
/ 19 января 2012

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

Мой код:

 TranslateTransform animatedTranslateTransform = new TranslateTransform();
 this.RegisterName("slide", animatedTranslateTransform);
 TransformGroup transformGroup = new TransformGroup();
 transformGroup.Children.Add(animatedTranslateTransform);
 _button.RenderTransform = transformGroup;

 //translate Y
 DoubleAnimation slideDown = new DoubleAnimation(20, TimeSpan.FromSeconds(1.0));
 Storyboard.SetTargetName(slideDown, "slide");
 Storyboard.SetTargetProperty(slideDown, new PropertyPath(TranslateTransform.YProperty));
 storyBoardSlideDown.Children.Add(slideDown);

Ответы [ 2 ]

2 голосов
/ 19 января 2012

Используйте DoubleAnimation.By вместо DoubleAnimation.To. Из MSDN:

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

запись

DoubleAnimation slideDown =
    new DoubleAnimation { By = 20, Duration = TimeSpan.FromSeconds(1.0) };
0 голосов
/ 19 января 2012

Вам необходимо установить FillBehavior вашей анимации (например, DoubleAnimation) в HoldEnd:

da.FillBehavior = FillBehavior.HoldEnd;

Затем установить свойство da.From в верхнюю или левую часть объекта Canvas или Element.*

Если ваш объект может двигаться как вертикально, так и горизонтально, вам понадобится два объекта DoubleAnimation, прикрепленных к вашей раскадровке.

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