【问题标题】:Reversing an animation in Silverlight on button press or any other event在按下按钮或任何其他事件时反转 Silverlight 中的动画
【发布时间】:2010-07-13 05:39:14
【问题描述】:

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

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

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

所以,总而言之,关于如何按需反转动画有什么想法吗?

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

【问题讨论】:

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


    【解决方案1】:

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

    目前,我只是对测试的 Duration 值进行了硬编码,并且似乎工作正常。我想对于一个真正的实现来说,Duration 可以绑定到某个值,并且计算也可以使用该值。

    【讨论】:

    • 我在类似的情况下或多或少做了同样的事情。我获得StoryBoard.Duration 的问题是值是Automatic,我必须导航到情节提要中的实际动画类并获取它们的持续时间。
    猜你喜欢
    • 1970-01-01
    • 2013-05-04
    • 2021-01-20
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    • 2015-08-05
    • 2017-10-02
    • 1970-01-01
    相关资源
    最近更新 更多