• 8270阅读
  • 3回复

[原创]ScrollArea 滑动拖拽加速心得-Venus原创 [复制链接]

上一主题 下一主题
离线zjhcool
 
只看楼主 倒序阅读 楼主  发表于: 2011-02-25
曾几何时觉得 ScrollArea 滑动加速的动态效果太绚丽了,以至于完全对它摸不着头脑,现在想来一切都是浮云,没有什么是办不到的!没有啥好的效果是离得开物理的,呵呵! 其实ScrollArea滑动加速并没想象中的复杂,要想实现滑动加速就得弄清除过程和步骤:
1、如何判断拖拽产生的力度有多少
要想实现滑动拖拽,首先必须解决的问题是,用户在滑动拖拽时产生的力度有多大/多快!
Venus自己想了一种方式:
Power = valueChanged / timeChanged;
valueChanged = 最后一次 MoveEvent 的位置偏移值;
timeChanged  =  最后一次MoveEvent 到Release时的时间差
Power = 拖拽产生的力度



2、根据拖拽产生的力度做ScrollBar value 的值变化(俗称加速效果)
有了拖拽产生的力度,一切变得豁然了, 加速效果还难得倒谁呢。
利用物理学的抛物线算法,即可呈现出加速度慢慢减小的过程,如下图:
Easing curve for a cubic (t^3) function: decelerating to zero velocity.

Easing curve for an exponential (2^t) function: decelerating from zero velocity.


拖拽产生的力度Power 和value 建立映射关系,或 1:1 或1:2 等等,安实际情况决定。3、利用定时器或者状态机一类的东西实现动画
每个几毫秒做一次值变化,连续起来就是动画效果!
OK, 大工告成,Venus 原创,欢迎交流!




标签: android, Qt, ScrollArea, 加速度, 拖拽, 滑动
本文链接: ScrollArea 滑动拖拽加速心得-Venus原创
版权所有: Venus, 转载请注明来源Venus并保留链接地址!


相关文章


我的博客地址: http://newfaction.net
离线roywillow

只看该作者 1楼 发表于: 2011-02-25
就是说,滑块有动量效果是吧
有具体的代码没,给个瞅瞅
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线vip24688
只看该作者 2楼 发表于: 2011-03-06
原理是这么多重要
离线zjhcool
只看该作者 3楼 发表于: 2011-03-15
代码就不放出了~不过可以给个提示:

    void mousePressEvent( QMouseEvent * );
    void mouseReleaseEvent( QMouseEvent * );
    void mouseMoveEvent( QMouseEvent * );
利用这三个事件!

另外论坛我很少逛的。可以去我的博客回复,这样我看到比较快。呵呵
我的博客地址: http://newfaction.net
快速回复
限100 字节
 
上一个 下一个