1

次のようなコードで Storyboard-Animation を呼び出していますMyAnim.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 に答える