按下按钮或任何其他事件在Silverlight中反转动画

时间:2010-07-13 05:39:14

标签: wpf silverlight silverlight-4.0 expression-blend silverlight-toolkit

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

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

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

那么,总之,有关如何按需逆转动画的任何想法?

PS:我知道有一个PathListBoxUtils为PathListBox提供滚动行为,但这并没有完全实现我想要的。换句话说,我希望修改PathListBoxUtils,使其具有无限旋转,可翻转的轮播,而不是一次滚动一个项目。

1 个答案:

答案 0 :(得分:1)

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

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