我寻找这个特定的事情,因为我认为它是相当重要且令人困惑的问题,但我没有在这方面找到任何东西。我考虑的是WPF和Silverlight动画中的时间缩放。
假设我们有一个持续4秒的DoubleAnimation,将属性从0动画到100。它是自动反转的,或者有一个补充动画来反转其效果,这并不重要。假设触发此动画的事件是简单的鼠标悬停。
问题在于:我将光标悬停在元素上。属性在4秒内从0到100。我将光标移开1秒钟,属性从100到75,然后我再次悬停。现在属性在4秒内从75到100。对于用户来说,很明显动画运行得慢了4倍。是否有任何方法可以缩放动画的时间?如果我想让此动画在1秒内从75到100运行,该怎么办呢?我自己想到了一种可能的解决方案,即创建一个转换器,它会接受四个参数(绝对开始和结束、实际开始和整个间隔的时间跨度),然后输出正确的时间。是否有更优雅的方式?
我注意到,当动画速度很快时,通常不会出现问题。当动画在0.2秒或0.1秒内运行时,人类实际上无法观察到速度差异,也许所有动画都应尽可能快以不降低体验。但请理论上考虑这个问题(因此没有代码示例)。我只是好奇是否有任何适当的方法可以缩放动画时间。
如果在web上有答案,请直接指引我去看。
Paweł
附言:不要介意我的英语,我不是母语使用者;)