将 WPF 情节提要替换为自定义 While 循环
本文关键字:自定义 While 循环 替换 WPF | 更新日期: 2023-09-27 18:31:23
我想用一些自定义的 WHILE 循环替换 WPF 情节提要来检查它是否可行。我拥有的代码如下。
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......
任何线索如何做到?
谢谢!!
我会
说,不要使用 while 或任何其他循环,因为那时您将在循环运行时冻结程序。最简单的方法(不一定是最好的)是设置一个计时器,该计时器每帧执行一次左右,因此每秒执行 30-120 次,并逐步执行动画检测计时器调用之间实际经过了多少实时时间。
因此,如果您需要以每秒 10个单位的速度移动一个对象,并且您的计时器以某个快速的间隔执行,我会找到上次进行计时器调用的时间,现在的时间,找到 dT(时间变化),然后做 dT*10,移动该单位数的对象。
随着计时器的迭代,您应该看到对象在不冻结软件的情况下移动。