1

我在我的代码中调用 Storyboard-AnimationMyAnim.Begin();

但是当我再次调用该方法时(例如,当我再次单击时),它会中断当前正在运行的动画并从头开始重新开始。

有没有办法多次启动相同的动画而不会互相打断?

我做了一个爆炸效果,我想让它一次又一次地爆炸。

4

1 回答 1

1

Storyboard 对象包含一个已完成的事件。当情节提要完成运行时,它会被触发。

我建议这样的事情:

私有对象 _locker=新对象();私人布尔_isProcessing;私人 int _waitingAnimations;

public void Setup()
{
    MyAnim.Completed+=CompletedExecution;
}
private void CompletedExecution(object sender, EventArgs args)
{
    bool runAnotherAnim;
    lock(_locker)
    {
        runAnotherAnim=_waitingAnimations>0;
        if(_waitingAnimations>0)
             _waitingAnimations--;

    }
    if(runAnotherAnim)
        MyAnim.Begin();
    else
        _isProcessing=false;
}
public void AddAnimation()
{
   lock(_locker)
   {
       if(_isProcessing)
       {
           _waitingAnimations++;
       }
       else
       {
           _isProcessing=true;
           MyAnim.Begin();

       }
   }

}

您需要查看 Completed 事件提供的参数,因为我是从内存中执行此操作的,但我之前使用过它,它完全符合您的要求。

于 2012-11-11T21:35:49.457 回答