代码之家  ›  专栏  ›  技术社区  ›  Daren Thomas

如何在c/wpf中停止动画?

  •  46
  • Daren Thomas  · 技术社区  · 16 年前

    我有这样的东西:

    barProgress.BeginAnimation(RangeBase.ValueProperty, new DoubleAnimation(
        barProgress.Value, dNextProgressValue,
        new Duration(TimeSpan.FromSeconds(dDuration)));
    

    现在,你如何停止动画 DoubleAnimation )?我之所以想这样做,是因为我想开始新的动画(这似乎有效,但很难说),并最终停止最后一个动画…

    8 回复  |  直到 6 年前
        1
  •  75
  •   Vadim Ovchinnikov    6 年前

    要阻止它,请致电 BeginAnimation 第二个参数再次设置为 null .

        2
  •  28
  •   bas    10 年前

    使用情节提要控制动画时,请确保将第二个参数设置为true,以便将动画设置为可控:

    public void Begin(
        FrameworkContentElement containingObject,
        **bool isControllable**
    )
    
        3
  •  16
  •   BruceLH    12 年前

    有两种方法可以阻止开始动作。第一种方法是在第二个参数设置为空的情况下再次调用Beginanimation。这将删除属性上的所有动画,并且 回复 值返回到其基值。

    根据您使用该值的方式,这可能不是您想要的行为。第二种方法是将动画begintime设置为空,然后用它调用beginimation。这将删除该特定动画并将该值保留在其当前位置。

    DoubleAnimation myAnimation = new Animation();
    // Initialize animation
    ...
    
    // To start
    element.BeginAnimation(Property, myAnimation);
    
    // To stop and keep the current value of the animated property
    myAnimation.BeginTime = null;
    element.BeginAnimation(Property, myAnimation);
    
        4
  •  7
  •   Nick    15 年前

    如果希望基值变为 有效值,你必须 阻止动画影响 财产。有三种方法 使用情节提要动画执行此操作:

    • 设置动画的FillBehavior 要停止的属性
    • 删除整个故事板
    • 从中移除动画 个人财产

    来自MSDN

    How to: Set a Property After Animating It with a Storyboard

        5
  •  7
  •   Junior Mayhé    15 年前

    在我的例子中,我必须使用两个命令,我的XAML有一个按钮可以触发一个触发器,它的触发器会触发故事板动画。

    我已经设置了一个停止动画的按钮,其中包含以下代码:

    MyBeginStoryboard.Storyboard.Begin(this, true);
    MyBeginStoryboard.Storyboard.Stop(this);
    

    我不喜欢它,但它在这里真的很管用。试一试!

        6
  •  6
  •   Fawaz    8 年前
    <Trigger.EnterActions>
           <BeginStoryboard x:Name="myStory">
           .........
           </BeginStoryboard>
    </Trigger.EnterActions>
    <Trigger.ExitActions>
           <StopStoryboard BeginStoryboardName="myStory"/>
    </Trigger.ExitActions>
    
        7
  •  4
  •   Brian Leahy    16 年前

    将动画放到故事板中。在情节提要上调用begin()和stop()以开始停止动画。

        8
  •  0
  •   oliver    11 年前

    您可以使用此代码:

    [StoryBoardName].Remove([StoryBoardOwnerControl]);