我在Windows Phone 7中使用以下代码来动画CompositeTransform
:
var da = new DoubleAnimationUsingKeyFrames() ;
_storyboard.Children.Add (da);
_translateXKeyFrame = new EasingDoubleKeyFrame {...}
da.KeyFrames.Add (_translateXKeyFrame);
Storyboard.SetTarget (da, _transform);
Storyboard.SetTargetProperty(da, "TranslateX");
为我使用此代码的属性设置动画:
_translateXKeyFrame.Value = value;
_storyboard.Begin ();
遗憾的是,此代码不适用于winrt(动画无法运行)。
对于winrt,存在依赖和独立动画的概念。如果我设置EnableDependentAnimation
标志,那么动画似乎就会运行。问题是,动画仅在用户完成与触摸屏的交互后才会运行。
我猜其原因是UI线程在用户执行某些操作时被阻止,因此依赖动画将无法运行。
为什么动画在作为独立动画运行时不起作用(即EnableDependentAnimation
设为false)?
答案 0 :(得分:1)
无需为动画转换值设置EnableDependentAnimation属性。 WinRT始终建议为值设置动画,这不会影响布局,以便动画不会阻止UI线程。要为Height / Width等属性设置动画,必须将EnableDependentAnimation设置为true。
RenderTransform和投影值可以是动画而不设置此属性。
http://www.codeproject.com/Articles/415721/Fast-and-Fluid-Animations-in-your-Windows-UI-App
答案 1 :(得分:1)
此代码有效。
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);