【发布时间】:2019-04-29 22:25:26
【问题描述】:
我有以下代码将矩形 向下 100px 平移,然后在完成后将矩形 向右 100px 平移,但我希望向右平移以保持动画 Y (100px),但它并没有这样做。调试时,我注意到 Translation 的值是 (0,0,0) 而不是 (0,100,0)。
这是我的应用程序中的代码(应用程序需要有 UWP 目标 + 最小 sdk 17763):
public MainPage()
{
this.InitializeComponent();
this.Loaded += (sender1, e1) =>
{
var compositor = Window.Current.Compositor;
var batch = compositor.CreateScopedBatch(Windows.UI.Composition.CompositionBatchTypes.Animation);
var vertical = compositor.CreateVector3KeyFrameAnimation();
vertical.InsertKeyFrame(1.0f, new Vector3(0f, 100f, 0f));
vertical.Duration = TimeSpan.FromMilliseconds(2000);
vertical.Target = "Translation";
Rect.StartAnimation(vertical);
batch.End();
batch.Completed += (sender2, e2) =>
{
var horizontal = compositor.CreateVector3KeyFrameAnimation();
// PROBLEM: ... Rect.Translation.Y is not 100, it's 0 ...
horizontal.InsertKeyFrame(1.0f, new Vector3(100f, Rect.Translation.Y, 0f));
horizontal.Duration = TimeSpan.FromMilliseconds(2000);
horizontal.Target = "Translation";
Rect.StartAnimation(horizontal);
};
};
}
初始动画完成后保持Y位置的正确方法是什么?
【问题讨论】:
-
它可能在你期待它之前捕获了 Rect.Translation.Y 的值。也许尝试`horizontal.InsertExpressionKeyFrame(1.0f, "Vector3(100f, this.Target.Translation.Y, 0f)");`
-
我以另一种方式解决了它,但我也认为你的正确。谢谢!
标签: uwp windows-composition-api xaml-composition