【问题标题】:Reusable animations可重复使用的动画
【发布时间】:2014-11-27 08:39:37
【问题描述】:

我是 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>

我希望您了解我正在尝试做的事情的要点。我知道我可以将情节提要中的代码添加到上面的每个部分,但这会非常乏味。有没有优雅的方法来做到这一点?

【问题讨论】:

  • 注意:好的。所以我做了一点挖掘,并使用代码来启动和停止情节提要,以及事件处理程序来控制它们何时运行的顺序。很高兴知道是否有办法在纯 XAML 中执行此操作。
  • 我认为你最好用代码管理这些动画(不幸的是)。

标签: c# wpf xaml


【解决方案1】:

您应该能够在情节提要(inherited from Timeline) 上设置RepeatBehavior 属性

<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也可以设置为正整数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多