我想创建未设置持续时间的动画,而是根据绝对速度设置计算动画。例如。我希望动画以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
答案 0 :(得分:0)
使用以下代码: -
ani.Duration = new Duration(TimeSpan.FromSeconds(200 / myPixelsPerSecond))
根本不是“笨拙”。
如果使用这样一个相当直接的表达式值得添加新属性,如果将相同的方法应用于其余的可用API,会发生什么?这些“有用”属性的集合将扩展到不可控制的级别。 API会受到数以万计的类似属性的影响,所有这些属性都会执行相当简单的表达式来设置真正的基本属性。
优雅(与clusmy相反)有一小组精心挑选的属性,可以使用简单的表达式以数百万种方式组合。正如上面那样。