2012-04-16 5 views
0

私はにWPF Storyboardを置き換えます。カスタムWHILEループを使用して可能かどうかを確認します。私が持っているコードは次のコードです。WPF StoryboardをカスタムWhileループに置き換えます。

public void RestartAnimation(int seconds) 
{ 
      da.From = this.ActualWidth; 
      da.To = -ContentActualWidth; 
      da.RepeatBehavior = RepeatBehavior.Forever; 
      da.Duration = new Duration(TimeSpan.FromSeconds(seconds)); 
      Timeline.SetDesiredFrameRate(da, 15); 

      if (sb.Children.Count == 0) 
      { 
       sb.Children.Add(da); 
       Storyboard.SetTargetProperty(da, new PropertyPath("(Canvas.Left)")); 
       Storyboard.SetTarget(da, cp); 
       sb.Begin(); 
      } 
} 

私はそれを行うことができる方法を任意の手掛かり

...それはそれの内側にいくつかのタイマー& WHILEなる必要がありますね?

ありがとうございます!

答えて

2

whileループや他のループは使用しないでください。ループが実行されている間はプログラムをフリーズします。 最も簡単な方法(必ずしも最良ではない)は、フレームごとに1回程度、30-120回実行されるタイマーを設定し、タイマー呼び出しの間に実際にどのくらいの時間が実際に経過したかをアニメーションで検出します。

速度が10秒/秒のオブジェクトを移動する必要があり、タイマーがある一定の間隔で実行される場合は、最後のタイマーコールが行われた時刻、現在時刻、dT (Time Change)を実行し、dT * 10を実行して、オブジェクトをその数だけ移動させます。

タイマーが反復するにつれて、ソフトウェアがフリーズしてオブジェクトが移動するのを確認する必要があります。

関連する問題