コード ビハインドから 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 を正しく設定していることがわかります。ただし、タスク遅延アプローチはあまり効率的ではないようです