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