2012-10-01 3 views
0

J'ai utilisé le code suivant dans Windows Phone 7 pour animer un CompositeTransform:Animer CompositeTransform que l'animation indépendante (EnableDependentAnimation == false)

 var da = new DoubleAnimationUsingKeyFrames() ; 
     _storyboard.Children.Add (da); 
     _translateXKeyFrame = new EasingDoubleKeyFrame {...} 
     da.KeyFrames.Add (_translateXKeyFrame); 
     Storyboard.SetTarget (da, _transform); 
     Storyboard.SetTargetProperty(da, "TranslateX"); 

pour animer la propriété J'ai utilisé ce code:

 _translateXKeyFrame.Value = value; 
     _storyboard.Begin(); 

Ce code ne fonctionne malheureusement pas pour winrt (l'animation ne fonctionne pas).

Pour winrt il y a le concept d'animations dépendantes et indépendantes. Si je mets le drapeau EnableDependentAnimation, alors l'animation semble fonctionner. Le problème est que l'animation ne s'exécute qu'après que l'utilisateur a fini d'interagir avec l'écran tactile.

Je suppose que la raison en est que le thread UI est bloqué pendant que l'utilisateur fait quelque chose, donc l'animation dépendante ne s'exécutera pas.

Pourquoi l'animation ne fonctionne-t-elle pas, lorsqu'elle est exécutée en tant qu'animation indépendante (par exemple avec EnableDependentAnimation défini sur false)?

Répondre

1

La propriété EnableDependentAnimation n'a pas besoin d'être définie pour l'animation des valeurs de traduction. WinRT recommande toujours d'animer les valeurs, ce qui n'affecte pas la mise en page afin que l'animation ne bloque pas le thread UI. Pour animer des propriétés telles que Height/Width, il est nécessaire de définir EnableDependentAnimation sur true. RenderTransform et les valeurs de projection peuvent être animées sans définir cette propriété.

http://www.codeproject.com/Articles/415721/Fast-and-Fluid-Animations-in-your-Windows-UI-App

+0

merci pour le lien, je l'avais déjà lu. Mais comme vous pouvez le voir, mon animation n'affecte pas la mise en page, mais une transformation. – thumbmunkeys

1

Ce code fonctionne.

image1.RenderTransform = new TranslateTransform(); 

animateY = new DoubleAnimation(); 
animateY.from=0; 
animateY.To += 200; 
animateY.Duration = TimeSpan.FromMilliseconds(400); 

Storyboard.SetTarget(animateY, image1.RenderTransform); 
Storyboard.SetTargetProperty(animateY, "TranslateTransform.Y"); 

_story.Children.Add(animateY);