2009-08-18 5 views
1

私は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
private static void ConfigureStoryboard(DoubleAnimation animation, Storyboard storyboard, EasingFunction function) 
    { 
     DoubleAnimation myAnimation = new DoubleAnimation(); 
     myAnimation.Duration = animation.Duration; 
     myAnimation.From = animation.From; 
     myAnimation.To = animation.To; 

     storyboard.Children.Add(myAnimation); 
    } 

は、アニメーションは、それがデフォルトを取得し、他の期間を持っている必要があり、ストーリーボードのみ0.3秒のために実行されるので、アニメーションの唯一の第三は、停止する前に実行されます。

+0

アニメーションの再生時間が設定されています。それを忘れると、ストーリーボードはちょうど1秒間実行されます。持続時間を<1秒に設定すると、完了前に停止する前に長時間再生されます。 – oltman

+1

アニメーションの長さとストーリーボードの長さの両方を設定する必要があります。ストーリーボードの長さが0.3秒で、長さが1秒のアニメーションが含まれている場合、アニメーションの最初の0.3秒のみが再生されます。 – KeithMahoney

+0

パーフェクト!どうもありがとうございました! – oltman

関連する問題