javascript - 使用 Hammer.js 2.0.4 在当前平移期间强制 "panend"

标签 javascript hammer.js

我正在使用 Hammer.js 来监听元素上的水平平移。 当 deltaX 达到阈值时,我想终止当前平移,强制“平移”并在用户下次尝试“平移开始”时恢复平移。

通读文档,现在似乎无法使用该库。 有人知道解决方案吗?

    var mc = new Hammer.Manager(@option_elm.get(0),
        recognizers: [
            [Hammer.Pan,{direction: Hammer.DIRECTION_HORIZONTAL}]
        ]
    )

    mc.on('panleft', function(e) {
        e.kill() // something simple like this...?
    })

最佳答案

我遇到了同样的问题。 Hammer.js 有一个名为 stop(); 的内置方法。您可以在“penleft”事件函数中像这样使用它:mc.stop();

http://hammerjs.github.io/api/#stop%28[force]%29

这不会强制“penend”。 Hammer.js 将忽略所有输入。不幸的是,这种方法有一个巨大的错误。事件对象在所有新输入上都会有错误的参数: https://github.com/hammerjs/hammer.js/issues/811

所以我曾经使用一个名为“isFired”的辅助变量。您的代码可能如下所示:

var mc = new Hammer.Manager(@option_elm.get(0),
        recognizers: [
            [Hammer.Pan,{direction: Hammer.DIRECTION_HORIZONTAL}]
        ]
    ),
    isFired = false;

mc.on('panstart', function(e) {
     isFired = false;
});
mc.on('panleft', function(e) {
    if (!isFired) {
        isFired = true;
        yourCustomCallback();
    }
});
mc.on('panend', function(e) {
     isFired = false;
});

在“penstart”和“panend”上将此变量重置为 false 很重要。

关于javascript - 使用 Hammer.js 2.0.4 在当前平移期间强制 "panend",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27255182/

相关文章:

javascript - key 代码 13 不起作用

javascript - Jquery 与 Asp.net 按钮

javascript - Hammer.js 单击在点击操作后点击后面的 DOM 元素上触发

javascript - Axios 帖子在 Chrome (CORS) 中停滞

javascript - 未处理的PromiseRejection警告: ReferenceError: browser is not defined when running puppeteer?

javascript - 如何使该脚本可读

jquery - 将 Jquery.hammer 和 Hammer 2.0.2 与 RequireJS 结合使用

javascript - HammerJS 2.0 中手动触发事件

angular - 如何在Angular中注册触摸移动事件?

javascript - 锤子.js : How to handle/set tap and doubletap on same elements