1

如何在 Silverlight 中反转事件中的双重动画?例如,假设我有一个椭圆作为路径,并且我正在无限循环中沿着这条路径移动一个形状。如果我按下一个按钮,我想反转旋转的方向(顺时针<->逆时针)。

更具体地说,我使用的是 SL4 中新增的 PathListBox 对象。它有一个从 0 到 100% (double 0 - 1) 的 start 属性,它将第一个项目放置在路径上的指定位置。通过将此属性设置为从 0 到 1 和从 1 到 0 的动画,我可以使对象顺时针和逆时针旋转。

假设我有一个按钮,按下按钮时,我想反转方向。我该怎么做呢?我尝试暂停动画并交换动画的 To 和 From 值并恢复它,但这会导致动画跳转。因此,如果它在椭圆上的“3 点钟”,它会跳到“9 点钟”并从那里向后退。我尝试将情节提要的 CurrentTime 属性设置为“Duration - CurrentTime”,但该属性似乎不可设置。

所以,总而言之,关于如何按需反转动画的任何想法?

PS:我知道有一个 PathListBoxUtils 为 PathListBox 提供滚动行为,但这并不能完全实现我想要的。或者换一种说法,我希望修改 PathListBoxUtils 以拥有一个无限旋转、可逆的轮播,而不是一次滚动一个项目。

4

1 回答 1

1

好的,我让它工作的方法是暂停动画,交换 To 和 From 值,并使用 Seek 方法将动画向前移动一定量。我需要它向前移动的数量是“Duration.TimeSpan() - GetCurrentTime()”,但访问 Duration 似乎会引发异常(操作对于对象的当前状态无效)。

现在,我只是硬编码了测试的持续时间值,似乎工作正常。我猜对于一个真正的实现, Duration 可以绑定到某个值,并且计算也可以使用该值。

于 2010-07-13T07:29:48.860 回答