首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Hammer.js识别对角手势(滑动)

问使用Hammer.js识别对角手势(滑动)
EN

Stack Overflow用户
提问于 2014-12-24 11:45:19
回答 2查看 2.9K关注 0票数 5

用Hammer.js可以识别对角滑动吗?

我看过他们的文件,但没有发现任何关于对角滑动或平底锅等的东西.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-03 18:49:34

一个包含大量有关手势的信息的对象被传递给每个Hammer.js事件回调(如描述的在API文档中)。

您要寻找的是eventObject.angle属性。它的值介于-180和180之间(代表右,-90表示向上,90E 211表示向下,E 112180E 213表示左)。

下面是你如何识别斜线滑动的方法:

代码语言:javascript
复制
var hammertime = new Hammer(domElement);
hammertime.get("swipe").set({ direction: Hammer.DIRECTION_ALL });
hammertime.on("swipe", function(eventObject) {
    if(eventObject.angle < -90) {
        //UP-LEFT SWIPE...
    } else if(eventObject.angle < 0) {
        //UP-RIGHT SWIPE...
    } else if(eventObject.angle < 90) {
        //DOWN-RIGHT SWIPE...
    } else {
        //DOWN-LEFT SWIPE...
    }
});
票数 13
EN

Stack Overflow用户

发布于 2019-02-08 03:31:56

对于那些想要一个8路滑动(上,下,左,右,上,左,左,上,右,下)选项使用HammerJS。在一系列的值中使用这个角度是值得的。左派是唯一聪明的选择..。因为它是一个OR语句而不是一个AND语句。

代码语言:javascript
复制
    var hammertime = new Hammer(domElement);
    hammertime.get("swipe").set({ direction: Hammer.DIRECTION_ALL });
    hammertime.on("swipe", function(e) {

      let jResult = '';

      switch(true) {

            // LEFT
            case (e.angle < -157.5 || e.angle > 157.5):
                jResult = 'left'; 
                break;

            // RIGHT
            case (e.angle > -22.5 && e.angle < 22.5):
                jResult = 'right'; 
                break;

            // UP
            case (e.angle < -67.5 && e.angle > -112.5):
                jResult = 'up'; 
                break;

            // Down
            case (e.angle > 67.5 && e.angle < 112.5):
                jResult = 'down'; 
                break;

            // LEFT-Up
            case (e.angle < -112.5 && e.angle > -157.5):
                jResult = 'left-Up'; 
                break;

            // LEFT-Down
            case (e.angle > 112.5 && e.angle < 157.5):
                jResult = 'left-Down'; 
                break;

            // RIGHT-Up
            case (-22.5 > e.angle && e.angle > -67.5):
                jResult = 'right-Up'; 
                break;

            // RIGHT-Down
            case (e.angle > 22.5 && e.angle < 67.5):
                jResult = 'right-Down'; 
                break;

            default:
                // code block
                jResult = 'unknown'; // UNKNOWN - what happened?
            }
        console.log('--00--> Swipe: ' + e.direction + ' -- Dir is: ' + jResult);
        this.lastSwipe = jResult;  
    });

输出显示为控制台..。你的学识可能各不相同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27636422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档