次のようなコードで Storyboard-Animation を呼び出していますMyAnim.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 イベントによって提供される引数を確認する必要がありますが、以前にこれを使用したことがあり、まさにあなたが探していることを行います。