恒速银光动画

时间:2011-05-15 19:12:48

标签: silverlight animation silverlight-4.0

我想创建未设置持续时间的动画,而是根据绝对速度设置计算动画。例如。我希望动画以100像素/秒的速度发生,并根据To和From值自动计算持续时间。如果路径为350像素,则动画将花费3.5秒完成。

Duration.Automatic不适用于此。另外Animation.SpeedRatio是另一回事。

我当然可以根据路径长度来计算持续时间,但是我会在屏幕上移动很多物体,每个物体都会以程序的方式创建和移除,并且个人觉得它很笨拙而烦恼。

什么是好的解决方案? Silverlight 4或更高版本中是否存在内置行为?

虚构代码:

DoubleAnimation ani = new DoubleAnimation();
ani.From = 0;
ani.To = 200;
ani.AbsoluteSpeed = "300 pixels / sec";
storyBoard1.Begin(); // now my animation will take 0.66 sec

1 个答案:

答案 0 :(得分:0)

使用以下代码: -

ani.Duration = new Duration(TimeSpan.FromSeconds(200 / myPixelsPerSecond))

根本不是“笨拙”。

如果使用这样一个相当直接的表达式值得添加新属性,如果将相同的方法应用于其余的可用API,会发生什么?这些“有用”属性的集合将扩展到不可控制的级别。 API会受到数以万计的类似属性的影响,所有这些属性都会执行相当简单的表达式来设置真正的基本属性。

优雅(与clusmy相反)有一小组精心挑选的属性,可以使用简单的表达式以数百万种方式组合。正如上面那样。