我在我的代码中调用 Storyboard-AnimationMyAnim.Begin();
但是当我再次调用该方法时(例如,当我再次单击时),它会中断当前正在运行的动画并从头开始重新开始。
有没有办法多次启动相同的动画而不会互相打断?
我做了一个爆炸效果,我想让它一次又一次地爆炸。
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 事件提供的参数,因为我是从内存中执行此操作的,但我之前使用过它,它完全符合您的要求。