Storyboard控制动画播放的区间

        StoryboardBeginTimeDuration属性,可以使用它们来控制播放动画的区间。

        首先,实现一个6秒的动画,如下:

<Storyboard x:Key="sb">

    <DoubleAnimation Storyboard.TargetName="Rotate" Storyboard.TargetProperty="Angle"

                     BeginTime="00:00:00" Duration="00:00:06" FillBehavior="HoldEnd"

                     From="0" To="180"/>

</Storyboard>

        获取动画,可以在Load函数中进行:

m_storyBoard = this.Resources["sb"] as Storyboard;

        如果要播放前2秒,可以设定Duration2秒,这样,就只会播放前2秒,代码如下:

if (m_storyBoard != null)

{

    m_storyBoard.BeginTime = TimeSpan.FromSeconds(0);

    m_storyBoard.Duration = TimeSpan.FromSeconds(2);

    m_storyBoard.Begin(this, true);

}

            如果要播放后2秒,可以设定BeginTime-4秒,这样,就会从第4秒开始播放,换句话说设定BeginTime-4秒,表示动画提前4秒开始播放,代码如下:

if (m_storyBoard != null)

{

    m_storyBoard.BeginTime = TimeSpan.FromSeconds(-4);

    m_storyBoard.Duration = TimeSpan.FromSeconds(6);

    m_storyBoard.Begin(this, true);

}

         如果要播放中间2秒,按照上面所述,设定BeginTime-2秒,Duration4秒,这样,动画就会从第2秒开始播放,播放到4秒,代码如下:

if (m_storyBoard != null)

{

    m_storyBoard.BeginTime = TimeSpan.FromSeconds(-2);

    m_storyBoard.Duration = TimeSpan.FromSeconds(4);

    m_storyBoard.Begin(this, true);

}

           另外,SpeedRatio的设置,可以控制动画播放的速率,相应地就可以做到延长或缩短整个动画。

 

详细的可以参考Demo

 https://files.cnblogs.com/xirihanlin/DL090114@cc-AnimationControlDemo.zip

posted on 2009-01-14 22:03  xirihanlin  阅读(1132)  评论(1编辑  收藏  举报