我想在标签上执行一系列动画,例如,首先从0到1执行不透明度动画,反之亦然,只是在不透明度动画结束时,而不是在前景动画之前。我想在XAML代码中执行它,然后从C#代码开始和完成de动画。哪种方法最好,最有效?
欢迎所有回复!
提前致谢。
答案 0 :(得分:15)
最简单的方法是在一个具有合适BeginTime
和Duration
属性的故事板中定义整个动画。这样,整个动画可以作为一个单元启动和停止,但您可以有不同的序列。
例如:
<Storyboard Duration="0:00:06">
<DoubleAnimation Duration="0:0:4" Storyboard.TargetName="gear1RotateTransform" Storyboard.TargetProperty="Angle" From="-600" To="0"/>
<DoubleAnimation Duration="0:0:4" Storyboard.TargetName="gear2RotateTransform" Storyboard.TargetProperty="Angle" From="600" To="0"/>
<DoubleAnimation Duration="0:0:4" Storyboard.TargetName="gear3RotateTransform" Storyboard.TargetProperty="Angle" From="-600" To="0"/>
<DoubleAnimation BeginTime="0:0:1" Duration="0:00:02" Storyboard.TargetName="firstLetter" Storyboard.TargetProperty="Opacity" From="0.0" To="1.0"/>
<DoubleAnimation BeginTime="0:0:2" Duration="0:00:02" Storyboard.TargetName="secondLetter" Storyboard.TargetProperty="Opacity" From="0.0" To="1.0"/>
<DoubleAnimation BeginTime="0:0:3" Duration="0:00:02" Storyboard.TargetName="thirdLetter" Storyboard.TargetProperty="Opacity" From="0.0" To="1.0"/>
<DoubleAnimation BeginTime="0:0:4" Duration="0:00:02" Storyboard.TargetName="siteLink" Storyboard.TargetProperty="Opacity" From="0.0" To="1.0"/>
<DoubleAnimation BeginTime="0:0:4" Duration="0:00:02" Storyboard.TargetName="siteLinkTop" Storyboard.TargetProperty="Opacity" From="0.0" To="1.0"/>
</Storyboard>
此故事板会在前4秒内更改3个旋转变换的值,但firstLetter
项目的不透明度在经过一秒后才会开始变化,并且仅运行2秒。 {4}之后siteLink
和siteLinkTop
元素的不透明度不会更改(并且齿轮旋转动画已完成)。