如何使用代码暂停wpf动画?

时间:2012-06-27 04:53:09

标签: wpf animation

鉴于我的动画scene1。如何使用后面的C# code使用名为“Skip”的按钮暂停它,然后再播放另一个动画scene2

<Window.Resources>
    <Storyboard x:Key="scene1">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="whitebox">
            <EasingDoubleKeyFrame KeyTime="0" Value="1"/>
            <EasingDoubleKeyFrame KeyTime="0:0:1.7" Value="0"/>
        </DoubleAnimationUsingKeyFrames>
        <StringAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBlock.Text)" Storyboard.TargetName="charName">
            <DiscreteStringKeyFrame KeyTime="0:0:2" Value="Teacher"/>
            <DiscreteStringKeyFrame KeyTime="0:0:7.8" Value="Teacher"/>
            <DiscreteStringKeyFrame KeyTime="0:0:8" Value="Teacher"/>
        </StringAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.HorizontalAlignment)" Storyboard.TargetName="charName">
            <DiscreteObjectKeyFrame KeyTime="0:0:2" Value="{x:Static HorizontalAlignment.Left}"/>
            <DiscreteObjectKeyFrame KeyTime="0:0:7.8" Value="{x:Static HorizontalAlignment.Left}"/>
            <DiscreteObjectKeyFrame KeyTime="0:0:8" Value="{x:Static HorizontalAlignment.Left}"/>
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames
        (too long… etc.)

2 个答案:

答案 0 :(得分:2)

在代码后面,使用this.Resources [“scene1”]来获取Storyboard对象。

Storyboard storyBoard = this.Resources["scene1"] as Storyboard;
storyBoard.Begin();

使用故事板“已完成”事件在故事板完成时启动另一个动画

storyBoard.Completed += eventHandler

呼叫

storyBoard.Stop()

停止动画。

答案 1 :(得分:1)

除了Jeric Paul Calderon的回答之外,还有暂停功能:storyBoard.Pause()
主要的是Pause()暂停当前播放位置的动画,Stop()会停止并返回起点。