je fait une animation pour faire tourner mon contrôle, mais quand il est trigert il saute juste position finale, puis retourne immédiatement à la position de départ.WP7 - animation se termine trop tôt et sans effet reste
Les contrôles sont faits à partir du code derrière et sont TextBoxes propriétés suivantes:
FontSize = 45;
TextAlignment = TextAlignment.Center;
Widh = 40;
Heigh = 45;
je stocke les zones de texte en tableau, donc je déclenche l'animation avec le code suivant:
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: Maintenant, je sais probablement quel est le problème. J'ai un (parfois deux) Times Dispatcher en arrière-plan chaque seconde. Quand je les désactive, le problème est parti. Mais je ne peux pas le faire parce que j'ai besoin d'eux pour mesurer le temps. juste avant les stoping je déclenche l'animation et les les recommençant does'n aide. // Les DispetcherTimers font:
void tikac_Tick(object sender, EventArgs e)
{
herniCas += new TimeSpan(0, 0, 1);
}
Je n'ai pas de réponse à votre question, une suggestion: vous ne devez pas créer un 'EventHandler eh' var, vous pouvez simplement utiliser à la place un délégué anonyme. – jv42
@ jv42: Le motif de l'utilisation d'une variable 'eh' est généralement bonne, car elle permet au délégué retiré de l'événement une fois qu'il a été exécuté. – AnthonyWJones
Juste s'assurer, vous avez l'intention pour la durée de l'animation d'être un quart de seconde, IE très rapide. Le saut à la position finale n'est pas juste parce que son animation est très rapide, puis l'exécution de votre événement storyboard terminé? –