0

コード ビハインドから Windows 8 アプリで何かをアニメーション化しています。アニメーション オブジェクトのコレクションがあり、それぞれにDoubleAnimation. このコレクションを繰り返し処理するメソッドを呼び出し、Storyboardそれぞれに対して新しいオブジェクトを作成して開始します。BeginTimeストーリーボード に設定したか、またはその両方に設定したかに関係なくDoubleAnimation、それらはすべて同時に開始および実行されます。

設定したミリ秒数だけアニメーションを遅らせるにはどうすればよいですか?

  foreach (AnimationObject a in queue)
  {
      Storyboard sb = new Storyboard();
      sb.Duration = a.DoubleAnimation.Duration;
      sb.BeginTime = a.DoubleAnimation.BeginTime;
      sb.Children.Add(a.DoubleAnimation);
      Storyboard.SetTarget(a.DoubleAnimation, a.Target);
      Storyboard.SetTargetProperty(a.animation, a.TargetProperty);
      sb.Begin();
  }

代わりに使用するキューを作成しawait Task.Delay(a.BeginTime)、これが機能するので、BeginTime を正しく設定していることがわかります。ただし、タスク遅延アプローチはあまり効率的ではないようです

4

1 に答える 1

0

私の問題は、後でStoryboard同じものをターゲットにすることで、Target以前のものを上書きしていたことです。代わりに使用するようにキューを再設計DoubleAnimationUsingKeyFramesし、キーフレームが存在する既存のStoryboard場所にキーフレームを追加しました。現在、すべてが完全に機能しています!

于 2012-11-19T13:09:41.773 に答える