【发布时间】:2017-10-31 15:28:25
【问题描述】:
我正在开发面向 PC 的 Windows 10 通用应用程序。我想重复运行动画(不是在“RepeatBehaviour”循环中,而是在发生其他事情后再次运行它),但我在动画完成后重置动画控件时遇到了困难。
情节提要中的动画之一是 TranslateTransform。完成后,我可以在代码中使用 Canvas.SetLeft 和 Canvas.SetTop 重新定位控件。但是,在我使用 ScaleTransform 动画“消失”一个控件后,该控件仍然不可见,我无法使其再次可见。更改控件的高度和宽度没有任何作用。
在 XAML 中使用 AutoReverse 确实解决了这个问题,但我不希望这对用户可见。控件应该“消失”。我想在下次运行之前在代码中重置控件,在幕后。
我的故事板和我正在制作动画的边框控件如下所示。这第一次工作正常。图像以一些旋转飞过屏幕,然后消失。第二次图像是不可见的,直到比例变换再次运行。
我尝试在第一个关键帧之前添加另一个 ScaleTransform 动画,以快速从 0 缩放到 1(我尝试了“0”或“0.1”的持续时间),但由于某种原因这破坏了整个事情。
我想知道 RenderTransformOrigin 是否与此有关,但不确定如何将其与 TransformGroup 一起使用。因此将其设置为 (0.5,0.5) 以使旋转居中。
任何帮助将不胜感激。
<Storyboard x:Name="myStoryboard">
<DoubleAnimationUsingKeyFrames
Storyboard.TargetName="myImage"
Storyboard.TargetProperty="(Canvas.Top)"
EnableDependentAnimation="False">
<SplineDoubleKeyFrame x:Name="MyTopSpline" KeyTime="0:0:1.9"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames
Storyboard.TargetName="myImage"
Storyboard.TargetProperty="(Canvas.Left)"
EnableDependentAnimation="False"">
<SplineDoubleKeyFrame x:Name="MyLeftSpline" KeyTime="0:0:1.9"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimation Storyboard.TargetName="myImage"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(RotateTransform.Angle)"
From="0" To="360" BeginTime="0:0:1.0" Duration="0:0:1.9" />
<DoubleAnimation Storyboard.TargetName="myImage"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[1].(ScaleTransform.ScaleX)"
From="1" To="0" BeginTime="0:0:1.9" Duration="0:0:0.9" />
<DoubleAnimation Storyboard.TargetName="myImage"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[1].(ScaleTransform.ScaleY)"
From="1" To="0" BeginTime="0:0:1.9" Duration="0:0:0.9" />
</Storyboard>
<Border Name="myImage" Height="244" Width="244" Canvas.Left="200" Canvas.Top="100" Visibility="Collapsed"
RenderTransformOrigin=".5,.5">
<Border.RenderTransform>
<TransformGroup>
<RotateTransform Angle="0" />
<ScaleTransform ScaleX="1" ScaleY="1" />
</TransformGroup>
</Border.RenderTransform>
</Border>
【问题讨论】:
标签: c# animation uwp storyboard windows-10-universal