2014-10-02 67 views
7

我是一个WPF和XAML的完全新手。可重复使用的动画

我创建了一个简单的淡入和淡出动画为一个文本框: - 我想要做的是动画的生命周期内运行这个故事板几次

<Storyboard x:Key="storyFadeInOutTop" Name="storyFadeInOutTop"> 
    <DoubleAnimation From="0" To="1" Duration="00:00:01" 
        Storyboard.TargetName="txtTopCredit" 
        Storyboard.TargetProperty="Opacity"> 
    </DoubleAnimation> 
    <DoubleAnimation From="10" To="0" Duration="00:00:01" BeginTime="00:00:01" 
        Storyboard.TargetName="blurTop" 
        Storyboard.TargetProperty="Radius"> 
    </DoubleAnimation> 
    <DoubleAnimation From="0" To="10" Duration="00:00:01" BeginTime="00:00:05" 
        Storyboard.TargetName="blurTop" 
        Storyboard.TargetProperty="Radius"> 
    </DoubleAnimation> 
    <DoubleAnimation From="1" To="0" Duration="00:00:01" BeginTime="00:00:06" 
        Storyboard.TargetName="txtTopCredit" 
        Storyboard.TargetProperty="Opacity"> 
    </DoubleAnimation> 
</Storyboard> 

喜欢的东西: -

<Storyboard> 
    <!-- (Run my fade-in-fade out with BeginTime of 00:00:00) --> 
    <StringAnimationUsingKeyFrames Duration="00:00:01" BeginTime="00:00:07" 
      Storyboard.TargetName="txtTopCredit" 
      Storyboard.TargetProperty="Text"> 
      <DiscreteStringKeyFrame Value="Game design and concept by" KeyTime="0:0:1" /> 
    </StringAnimationUsingKeyFrames> 
    <!-- (Run my fade-in-fade out again with BeginTime of 00:00:07) --> 
    <StringAnimationUsingKeyFrames Duration="00:00:01" BeginTime="00:00:07" 
      Storyboard.TargetName="txtTopCredit" 
      Storyboard.TargetProperty="Text"> 
      <DiscreteStringKeyFrame Value="Look Ive changed to another credit" KeyTime="0:0:1" /> 
    </StringAnimationUsingKeyFrames> 
    <!-- (etc etc) --> 
</Storyboard> 

我希望你明白我想要做的要点。我知道我可以将故事板中的代码添加到上面的每个部分,但这会非常乏味。有没有一个优雅的方式来做到这一点?

+0

注意:O.K.所以我做了一些挖掘和使用代码来启动和停止故事板,以及事件处理程序来控制它们运行时的顺序。这将是很高兴知道是否有一种方法可以在纯XAML中执行此操作。 – 2014-10-02 14:18:33

+2

我认为你最好用代码管理这些动画(不幸的是)。 – 2014-12-16 09:06:19

回答

1

您应该能够设置在故事板(inherited from Timeline)

<Storyboard x:Key="storyFadeInOutTop" Name="storyFadeInOutTop" RepeatBehavior="Forever"> 
    <DoubleAnimation From="0" To="1" Duration="00:00:01" 
        Storyboard.TargetName="txtTopCredit" 
        Storyboard.TargetProperty="Opacity"> 
    </DoubleAnimation> 
    <DoubleAnimation From="10" To="0" Duration="00:00:01" BeginTime="00:00:01" 
        Storyboard.TargetName="blurTop" 
        Storyboard.TargetProperty="Radius"> 
    </DoubleAnimation> 
    <DoubleAnimation From="0" To="10" Duration="00:00:01" BeginTime="00:00:05" 
        Storyboard.TargetName="blurTop" 
        Storyboard.TargetProperty="Radius"> 
    </DoubleAnimation> 
    <DoubleAnimation From="1" To="0" Duration="00:00:01" BeginTime="00:00:06" 
        Storyboard.TargetName="txtTopCredit" 
        Storyboard.TargetProperty="Opacity"> 
    </DoubleAnimation> 
</Storyboard> 

RepeatBehavior也可以设置为正整数RepeatBehavior财产。