cocos2dx 实现gallery (五)
来源:互联网 发布:北京数据录入 编辑:程序博客网 时间:2024/05/01 00:37
boss还想实现一个自动滚的效果,就是我手指一下快速的划过,不是慢慢拖动,然后这个滚滚会自己滚一段时间,再慢慢停下。
首先需要判断这个东西,是划过还是拖动。直接取按下的时间和松开的时间的差值,小于eps就算是划过,按自动滚处理,不然就按之前的拖动处理,我取的是0.5秒
然后怎么模拟这个滚一滚的慢慢停这个效果。。。我们还是来说物理吧。。。
把整个过程分为2段,一段是加速,一段是减速。
一开始滚轮静止,受到作用力,加速。然后作用力消失,受到阻力作用,减速。
加速的时候,假设是一个匀加速运动。这一段时间的位移和时间,我们是可以获取的。通过下面,可以求得瞬时速度。
s = 0.5*a*t^2 ---- s已知,t已知
v = at ---- a上面算出
减速这一段,假设这是一个匀减速运动。阻力恒定,那么加速度就恒定。但是这个加速度怎么取呢?我是测试了几次自己取了个值。因为我希望轻轻拨动一下,滚动的时间,大概是在1秒多这么一个范围。通过 v= at ,可以大概求出一个a,再根据实际效果,稍微调整一下。
知道触摸停止以后,还会滚多久,就方便了。启动一个定时器:
local schedulerFunc = function(dt) dt = dt *1000 -- s to ms timeLeft = timeLeft - dt local velocity = acc*timeLeft local path = velocity*dt*direction if timeLeft <= 0 then scheduler.unscheduleGlobal(self.scrollHandler) self:move(path,true) else self:move(path) end end self.scrollHandler = scheduler.scheduleGlobal(schedulerFunc, 0.01)上面这个,简单的就是,每个定时器周期内,算一个瞬时速度,然后算这个瞬时速度在一个周期内的位移,然后叫滚滚动那么个距离。因为回调很频繁,这样看上去效果已经不错了。
- cocos2dx 实现gallery (五)
- cocos2dx 实现gallery (一)
- cocos2dx 实现gallery (二)
- cocos2dx 实现gallery (三)
- cocos2dx 实现gallery (四)
- Android-画廊实现 (Gallery , ImageSwitch)
- Android手机UI设计---”知乎“界面外观模仿篇(五)---在Fragment里使用Gallery实现自动轮播和手动滑动
- HorizontalScrollView实现Gallery
- HorizontalScrollView实现Gallery
- 实现gallery无限循环
- gallery实现tab
- android--Gallery的实现
- Gallery 实现方法
- Android--Gallery实现切一屏
- Gallery(SimpleAdapter实现)
- RecyclerView实现Gallery
- gallery的自定义实现
- ViewPager实现Gallery效果
- 利用cookie和session实现购物记录和购物车
- 法布尔与昆虫记
- Validate Binary Search Tree
- linux中用shell去掉源码注释
- Java 增强型的for循环 for each 【转载】
- cocos2dx 实现gallery (五)
- AndroidStudio第一次使用细节
- Android ANR 问题
- 完美解决MySql数据库乱码问题
- js正则表达式语法
- 作业4.19
- Codeforces Round #298 (Div. 2)——A.B.C.D.E
- Python核心编程 杂
- Map集合 16天