我有一个CListCtrl
,其中包含大约100,000个条目。向用户呈现搜索框以在这些条目中进行搜索。在找到匹配项时,我将其设置为选择并使用EnsureVisible
滚动到它。
这个卷轴瞬间发生。我想尝试编写一个类似于ones demoed here的动画(特别是'Go Top - Easing 2'动画)。
我在想,对于一个基本的动画,
Scroll
增量为1(或其他更优化的值),延迟时间为增量=步骤5的结果。我试过这个,我感到非常困惑。首先,我的算法好吗?其次,是否有另一种更好的方法来实现这一点(最好类似于link above中的动画2)?
答案 0 :(得分:1)
您的算法似乎可以用于简单的线性滚动。但是,您的链接指向使用各种缓动功能的滚动。
缓和功能每次都不会滚动相同的数量,但增加或减少的目的是为了加速或减慢速度。
计算缓动值的常用方法是使用正弦结果。如果你想象一个正弦波并想象你一次只能看到它的一个像素,随着波的进展,像素将“缓和”在极端并加速通过中间值。
你的Easing 2动画只是在开始和结束时添加了一点反弹,这很容易通过使用一些正弦波超过每端的极值来实现。例如
_
/ \
/
\_/
如果您需要一些代码,我在C#中回答了类似的问题here。