【问题标题】:silverlight animation with constant speed匀速的银光动画
【发布时间】:2011-05-15 19:12:47
【问题描述】:

我想创建未设置 Duration 的动画,而是根据绝对速度设置计算的。例如。我希望动画以 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

【问题讨论】:

  • 基于您的“虚构代码”将是您的偏好,您没有很好地说明不简单地使用ani.Duration = new Duration(TimeSpan.FromSeconds(200/300)) 吗?请添加有关您反对此方法的更多详细信息。
  • 没有异议。正如我上面所说,感觉很笨拙。

标签: silverlight animation silverlight-4.0


【解决方案1】:

使用如下代码:-

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

一点也不“笨拙”。

如果使用这种相当直接的表达式值得添加新属性,如果将相同的方法应用于其余可用 API,会发生什么情况?这些“有用”属性的集合将扩展到无法管理的水平。 API 将被无数类似属性的重量压垮,所有这些属性都执行相当简单的表达式来设置真正的基本属性。

优雅(与笨拙相反)是拥有一小组精心挑选的属性,可以使用简单的表达式以无数种方式组合。和上面一样。

【讨论】:

    猜你喜欢
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    相关资源
    最近更新 更多