Uwp 为什么不是';翻译属性(组成)是否保留?
我有下面的代码,它将矩形向下平移100px,然后在完成后将矩形向右平移100px,但我希望向右平移可以保持动画Y(100px),但它不会这样做。调试时,我注意到Translation的值是(0,0,0),而不是(0100,0) 这是我的应用程序中的代码(应用程序需要有UWP目标+最小sdk 17763):Uwp 为什么不是';翻译属性(组成)是否保留?,uwp,windows-composition-api,xaml-composition,Uwp,Windows Composition Api,Xaml Composition,我有下面的代码,它将矩形向下平移100px,然后在完成后将矩形向右平移100px,但我希望向右平移可以保持动画Y(100px),但它不会这样做。调试时,我注意到Translation的值是(0,0,0),而不是(0100,0) 这是我的应用程序中的代码(应用程序需要有UWP目标+最小sdk 17763): 在初始动画完成后,保持Y位置的正确方法是什么?我非常确定约翰尼·韦斯特莱克的答案是正确的,但我用以下方法解决了我的问题: this.Loaded += (sender1, e1) =>
在初始动画完成后,保持Y位置的正确方法是什么?我非常确定约翰尼·韦斯特莱克的答案是正确的,但我用以下方法解决了我的问题:
this.Loaded += (sender1, e1) =>
{
var compositor = Window.Current.Compositor;
ElementCompositionPreview.SetIsTranslationEnabled(Rect, true);
var visual = ElementCompositionPreview.GetElementVisual(Rect);
var batch = compositor.CreateScopedBatch(Windows.UI.Composition.CompositionBatchTypes.Animation);
var vertical = compositor.CreateScalarKeyFrameAnimation();
vertical.InsertKeyFrame(1.0f, 100f);
vertical.Duration = TimeSpan.FromMilliseconds(2000);
visual.StartAnimation("Translation.Y", vertical);
batch.End();
batch.Completed += (sender2, e2) =>
{
var horizontal = compositor.CreateScalarKeyFrameAnimation();
horizontal.InsertKeyFrame(1.0f, 100f);
horizontal.Duration = TimeSpan.FromMilliseconds(2000);
visual.StartAnimation("Translation.X", horizontal);
};
};
我非常肯定约翰尼·韦斯特莱克的回答是正确的,但我用以下方法解决了我的问题:
this.Loaded += (sender1, e1) =>
{
var compositor = Window.Current.Compositor;
ElementCompositionPreview.SetIsTranslationEnabled(Rect, true);
var visual = ElementCompositionPreview.GetElementVisual(Rect);
var batch = compositor.CreateScopedBatch(Windows.UI.Composition.CompositionBatchTypes.Animation);
var vertical = compositor.CreateScalarKeyFrameAnimation();
vertical.InsertKeyFrame(1.0f, 100f);
vertical.Duration = TimeSpan.FromMilliseconds(2000);
visual.StartAnimation("Translation.Y", vertical);
batch.End();
batch.Completed += (sender2, e2) =>
{
var horizontal = compositor.CreateScalarKeyFrameAnimation();
horizontal.InsertKeyFrame(1.0f, 100f);
horizontal.Duration = TimeSpan.FromMilliseconds(2000);
visual.StartAnimation("Translation.X", horizontal);
};
};
它可能在您期望它之前捕获了Rect.Translation.Y的值。也许可以尝试“水平.InsertExpressionKeyFrame”(1.0f,“Vector3(100f,this.Target.Translation.Y,0f)”`我用另一种方法解决了这个问题,但我也认为你的观点是正确的。谢谢它可能在您期望它之前捕获了Rect.Translation.Y的值。也许可以尝试“水平.InsertExpressionKeyFrame”(1.0f,“Vector3(100f,this.Target.Translation.Y,0f)”`我用另一种方法解决了这个问题,但我也认为你的观点是正确的。谢谢