目前,我正在(尝试)为使用科尔多瓦(Eclipse)开发的移动游戏创建一些基本元素。我在这里要做的主要事情是在同一元素上设置两个tap事件。下面的代码显示了我如何解决此问题,但是当我尝试双击时,它不会被检测到-我得到的只是两次单击。我尝试了不同的方法,但是都没有帮助。

当双击失败时,我还会在控制台中收到此警报:“试图完成输入事件,但输入事件接收器已被处置”。

var doubletapped = false,
    tapped = false;
$(function() {
    var element = document.getElementById('blue');
    var hammertime = Hammer(element).on("tap doubletap", function(event) {
        if (event.type == 'doubletap') {
            tapped = false;
            doubletapped = true;
            alert('doubleTap!');
            console.log('doubleTap!');
        }
        if (event.type == 'tap') {
            doubletapped = false;
            tapped = true;
            alert('single tap!');
            console.log('singleTap!');
        }
    });
});


就像在Hammer.js changelog中所解释的那样,我已经设置了tap_always = false,但这并没有什么不同。您有什么推荐的吗?有没有其他的我可以做同样的事情而又没有这个问题的图书馆?

我要实现的目标是检测元素上的不同轻拍或/和手势,然后执行不同的操作。例如,如果单击元素#1,然后播放音频文件#1,如果双击同一元素,然后播放音频文件#2。

帮助将不胜感激!

干杯

最佳答案

尝试这个 -

var hammer = new Hammer.Manager(element, {});

var singleTap = new Hammer.Tap({event: 'singletap' });
var doubleTap = new Hammer.Tap({event: 'doubletap', taps: 2 });

hammer.add([doubleTap, singleTap]);

doubleTap.recognizeWith(singleTap);

singleTap.requireFailure([doubleTap]);

hammer.on('singletap', function() { console.log('single tap!') });
hammer.on('doubletap', function() { console.log('double tap!') });

关于javascript - 如何将'tap'和'doubletap'绑定(bind)到Hammer.js中的相同元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22683122/

10-10 01:17
查看更多