【问题标题】:HammerJS continuous dragging (drag after release)HammerJS 连续拖动(释放后拖动)
【发布时间】:2014-06-09 21:48:09
【问题描述】:

我可以在 HammerJS 发布后实现拖动(以及如何...)? (我将它与 AngularJS 一起使用,但这没关系)

我问的原因是我想实现平滑滚动(就像原生iOS在释放手指后继续滚动)

我确信这可以通过某种方式完成,因为在手势事件中存在速度属性。

我的代码在我的内容顶部有一个覆盖 div 来检测触摸,然后我根据它手动控制下面 div 的滚动。

【问题讨论】:

    标签: javascript angularjs hammer.js


    【解决方案1】:

    您只需要在 panend 上设置自己的速度回调。像下面这样的东西应该可以工作(假设使用 Hammer v2)

        var friction = -0.05;
    
        function panend(evt) {
            applyVelocity(evt.velocityY,evt.direction);
        }
    
        function applyVelocity(v,dir) {
            var dist = v*16;
            if(dir===Hammer.DIRECTION_DOWN) {
                dist*=-1;
            }
    
            //code here to move your elements Y transform
    
            if(v>0) {
                v+=friction;
                window.requestAnimationFrame(function(){
                    applyVelocity(v,dir);
                });
            }
        }
    

    【讨论】:

    • 我是hammer.js 和动画的新手——为什么摩擦有意义?为什么涉及速度?这如何使动画更流畅?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    相关资源
    最近更新 更多