使用ExpressionAnimation未设置动画的按钮偏移

时间:2016-08-17 12:00:34

标签: uwp composition

目前,我正在尝试使用Windows.UI.Composition命名空间。

var offsetAnimation = compositor.CreateExpressionAnimation();
offsetAnimation.SetReferenceParameter("ps", _propertySet);
offsetAnimation.Expression = "ps.myValue";

var buttonVisual = ElementCompositionPreview.GetElementVisual(testButton);
buttonVisual .StartAnimation("Offset.X", offsetAnimation);

_propertySet特定于页面,myValue是从其他方法添加/更新的。

按钮的代码:

<Button x:Name="testButton" Background="Red" />

问题是按钮的Offset没有改变,反而没有任何反应。但是,当我为OpacityScale属性设置动画时,同一个表达式正在运行。我也在页面中添加了WebView,此处Offset已正确设置动画。

2 个答案:

答案 0 :(得分:0)

Offset的类型为 System.Numerics.Vector3 。一种更简单的动画制作方法是使用 Vector3KeyFrameAnimation

var newOffset = new Vector3(newValueX, newValueY, newValuez);
var offsetAnimation = compositor.CreateVector3KeyFrameAnimation();
offsetAnimation.Duration = TimeSpan.FromSeconds(1);
offsetAnimation.InsertKeyFrame(1f, newOffset);

var buttonVisual = ElementCompositionPreview.GetElementVisual(testButton);
buttonVisual .StartAnimation("Offset", offsetAnimation);

答案 1 :(得分:0)

如果您使用_propertySet,则应从CompositionObject类派生变量ExpressionAnimation.SetReferenceParameter。您可以设置_anotherVisual.Offset.X,但不能设置一些浮动字段。

如果您希望将视觉偏移设置为某个值,请执行隐式动画。