【问题标题】:Silverlight animation starts too earlySilverlight 动画过早开始
【发布时间】:2011-07-27 22:06:02
【问题描述】:

我有一个 Silverlight 动画:

<Storyboard x:Key="CloseAnimation" x:Name="CloseAnimation" Storyboard.TargetName="nv" Storyboard.TargetProperty="Height">
  <DoubleAnimation x:Name="CloseAnimation1" Duration="0:0:5" From="30" To="0">
  </DoubleAnimation>
</Storyboard>

以及单击按钮时执行的以下代码:

MessageBox.Show("Test");
CloseAnimation.Begin();

我希望动画在 CloseAnimation.Begin(); 行开始时开始。被执行,然后持续指定的持续时间。但似乎显示动画的时间将从按钮单击开始测量。如果 MessageBox 可见 3 秒 - 从动画中减去这段时间,只显示剩余的动画。

为什么以及如何防止这种情况发生?

【问题讨论】:

  • +1 用于强调 MessageBox 的糟糕程度:)

标签: silverlight animation


【解决方案1】:

基本上动画是根据当前帧的时间开始的,而不是实际时间。

通过使用模态 MessageBox 延迟动画的开始,从第一帧的开始时间开始已经过去了一段时间,并且它进行了通常的追赶/插值。

不要在与模态消息框相同的线程中调用动画Begin()使用弹出窗口中的按钮来触发动画,而不是使用任何模态对话框。

【讨论】:

    猜你喜欢
    • 2011-11-15
    • 2015-04-11
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多