私はSilverlight 3で本当に奇妙な問題に遭遇しています。私は、与えられたDoubleAnimationの周りにストーリーボードを作成し、そのアニメーションを再生する拡張メソッドを定義しました。 Silverlightのストーリーボードのデフォルト期間は1秒ですが、私はアニメーションのためにそれを変更したいと思います。しかし、別の時間を設定すると、割り当てられた時間内に最初から最後までアニメーションを変更するのではなく、指定した時間だけアニメーションが再生されて停止します。たとえば、何かを0,0から0,10に移動し、持続時間を.3sに設定すると、アイテムは0.3に移動します。私はこれが設計によるものだとは想像できません。何がここで起こっているアイデアですか?ストーリーボードのアニメーションを切り捨てる
ここに私が使用しているコードがあります。 ConfigureStoryboardは、アニメーションの周りにストーリーボードが作成される場所です。私はそれをより読みやすくするイージング関数に関するいくつかのコードを削除しました。
public static void BeginAnimation(
this Transform transform,
DependencyProperty property,
DoubleAnimation animation,
EasingFunction function
)
{
var storyboard = new Storyboard();
ConfigureStoryboard(animation, storyboard, function);
Storyboard.SetTarget(storyboard, transform);
Storyboard.SetTargetProperty(
storyboard,
new PropertyPath(property));
storyboard.Begin();
}
private static void ConfigureStoryboard(DoubleAnimation animation, Storyboard storyboard, EasingFunction function)
{
DoubleAnimation myAnimation = new DoubleAnimation();
storyboard.Duration = animation.Duration;
myAnimation.From = animation.From;
myAnimation.To = animation.To;
storyboard.Children.Add(myAnimation);
}
アニメーションの再生時間が設定されています。それを忘れると、ストーリーボードはちょうど1秒間実行されます。持続時間を<1秒に設定すると、完了前に停止する前に長時間再生されます。 – oltman
アニメーションの長さとストーリーボードの長さの両方を設定する必要があります。ストーリーボードの長さが0.3秒で、長さが1秒のアニメーションが含まれている場合、アニメーションの最初の0.3秒のみが再生されます。 – KeithMahoney
パーフェクト!どうもありがとうございました! – oltman