c# - 可重复使用的动画

标签 c# wpf xaml

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

类似的东西:-

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

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

最佳答案

您应该能够在 Storyboard上设置 RepeatBehavior 属性 (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 也可以设置为正整数。

关于c# - 可重复使用的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26159445/

相关文章:

wpf - 为什么 WPF 中的 Binding 不调用该属性?

xaml - 如何使用x :bind inside ControlTemplate in UWP

c# - 如何将列表从数据库绑定(bind)到 RibbonComboBox?

c# - 如何判断类型是否为 "simple"类型?即持有一个单一的值(value)

wpf - 调用线程无法访问此对象,因为另一个线程拥有它 wpf

c# - 基于具有删除按钮的数据类型的 Listview 项目

c# - 是否可以在 XAML 中为条目将键盘设置为 "Sentence Capitalisation"?

c# - 将数据发布到 Flex/Flash (mxml) 应用程序

c# - Nuke 构建 .nuke 文件并构建多个解决方案

c# - 如何使用c#打开excel文档