【问题标题】:Play animation (storyboard) backwards向后播放动画(故事板)
【发布时间】:2010-05-30 21:05:54
【问题描述】:

有没有一种简单的方法来播放一些StoryBoad 向后(反转)?由于有一种方法Storyboard.Begin() 我希望有一些方法,如“Storyboard.BeginReversed()”,但我找不到它。

如果没有办法向后播放动画,我必须为我的大多数动画编写互补动画。这对我来说很难闻(某种代码重复)。

基本上我只是为显示和隐藏的网格设置动画。

【问题讨论】:

    标签: c# wpf animation


    【解决方案1】:

    你能把“From”和“To”翻过来再玩一遍吗?

    【讨论】:

    • 感谢您的回答。好的,就是这样……但不是很清楚。问题是你必须在某个地方保存你翻转过的信息。我宁愿有更清晰的东西。这个真的没有办法,Storyboard的创作者们没有想过这个吗??
    • @drasto- 我认为如果您想反向播放动画,设计师会将其视为不同的动画。您可以更轻松地创建这样的动画。当然,您总是可以编写扩展方法来扩展您正在使用的情节提要,使其更简洁。
    • 谢谢。我会尝试编写扩展方法,但这并不容易。我将不得不注意诸如在前向动画仍在运行时调用后向动画之类的想法。
    • 没有更好的答案,我不认为有更好的方法然后翻转 From 和 To,所以我接受这个答案。
    【解决方案2】:

    我认为这会对您有所帮助(另请参阅下面的 xaml 示例)

    var storyboard = this.Resources["Storyboard1"] as Storyboard;

            var anim = storyboard.Children[0] as DoubleAnimationUsingKeyFrames;
    
            anim.AutoReverse = true;
    
            anim.RepeatBehavior = RepeatBehavior.Forever;
    
    <Storyboard x:Key="Storyboard1">
            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="border" Storyboard.TargetProperty="(FrameworkElement.Width)">
                <SplineDoubleKeyFrame KeyTime="00:00:00" Value="200"/>
                <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="300"/>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>
    

    【讨论】:

    • 对不起,我不想自动重复,我想倒着播放,也许在原始播放完成后稍后。
    猜你喜欢
    • 1970-01-01
    • 2012-02-21
    • 2021-05-05
    • 2020-05-19
    • 2023-03-18
    • 2011-08-23
    • 1970-01-01
    • 2011-03-11
    相关资源
    最近更新 更多