目前,我正在(尝试)为使用科尔多瓦(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/