Я сделал анимацию, чтобы повернуть мой элемент управления, но когда он запускается, он просто переходит в конечную позицию и сразу же возвращается в исходное положение.WP7 - Анимация заканчивается слишком рано, и никакого эффекта нет
Регуляторы выполнены из кода позади и TextBoxes со следующими свойствами:
FontSize = 45;
TextAlignment = TextAlignment.Center;
Widh = 40;
Heigh = 45;
Я хранить TextBoxes в массиве, так что я запустить анимацию с помощью следующего кода:
foreach (TextBlock b in arrayOfTextBoxes)
{
Rotate(b);
}
Animation:
public static void Rotate(UIElement target)
{
var projection = new PlaneProjection();
target.Projection = projection;
DoubleAnimation da = new DoubleAnimation();
da.From = 0;
da.To = 90;
da.Duration = TimeSpan.FromSeconds(0.25);
da.AutoReverse = false;
Storyboard.SetTargetProperty(da, new PropertyPath(PlaneProjection.RotationZProperty));
Storyboard.SetTarget(da, projection);
Storyboard sb = new Storyboard();
sb.Children.Add(da);
EventHandler eh = null;
eh = (s, args) =>
{
projection.RotationZ = 90;
sb.Stop();
sb.Completed -= eh;
};
sb.Completed += eh;
sb.Begin();
}
EDIT: Теперь я уверенно знаю, в чем проблема. У меня есть один (иногда два) Dispatcher Times, тикающий в фоновом режиме каждую секунду. Когда я их отключил, уклонение исчезло. Но я не могу этого сделать, потому что мне нужно, чтобы они измеряли время. Остановка их перед тем, как я запускаю анимацию, и они снова начинают их снова, не помогают. // В DispetcherTimers сделать это:
void tikac_Tick(object sender, EventArgs e)
{
herniCas += new TimeSpan(0, 0, 1);
}
У меня нет ответа на ваш вопрос, просто предложение: вам не нужно создавать «EventHandler eh' var», вы можете просто использовать анонимный делегат. – jv42
@ jv42: Образец использования переменной 'eh', как правило, является хорошим, поскольку он позволяет делегату удаляться из события после его выполнения. – AnthonyWJones
Просто убедитесь, что вы намереваетесь, чтобы анимация была четверть секунды, IE очень быстро. Переход в конечную позицию происходит не только из-за того, что его анимация очень быстро, а затем выполнение вашего раскадровки завершено? –